2014-11-07 4 views
2

webproject Web2Py를 만들었으며 사용자가 보통 http://이 (가) http:// 인 페이지에 액세스하려고합니다.Pythonanywhere Web2Py가 HTTPS로 리디렉션

입력 할 때마다 http://domain.pythonanywhere.com을 입력하면 http://domain.pythonanywhere.com으로 리디렉션됩니다.

테일 0.5 초. SSL 검사를 수행하려면이를 피하고 싶습니다. 여기

## if SSL/HTTPS is properly configured and you want all HTTP requests to 
## be redirected to HTTPS, uncomment the line below: 
# request.requires_https() 

답변

5

PythonAnywhere dev에 : 우리의 측면에 벌레처럼 보이는

는 기본으로했다. 우리는 자체 사이트에 HTTPS를 "고정"하여 사람들은 항상 https://www.pythonanywhere.com/으로 이동하지만 고객 사이트로 유출되었을 수 있습니다.

누군가가 http://yourusername.pythonanywhere.com/으로 가면 처음에는 https 사이트로 이동하지 않으며 http를 받게됩니다. 그런 다음 https://yourusername.pythonanywhere.com으로 이동하면 브라우저는 https 도메인을 방문했음을 기억하므로 이후의 요청은 모두 리디렉션됩니다.

실제로는 일반적으로 우수 사례 (security problems의 숫자를 중심으로 작동하지만)를 사람들에게 강요해서는 안됩니다.

[업데이트] 버그가 수정되었습니다. boje에게 감사드립니다 :-) 한 가지주의 사항 - 수정 사항을 적용하기 전에 HTTPS를 통해 사이트를 방문한 적이 있다면 여전히 강제로 HTTPS. 새로운 고정 해제 된 동작을 보려면 브라우저 기록을 지워야합니다.

+0

페이지를 시크릿 모드로 만들려고 시도했지만 http : //에서 https : //로 여전히 이동하지만, http : // 에 머물러있는 IE8을 사용하십시오. 아마도 작동하지만 어쩌면 그것이 "핀"HTTPS 였을 지 알기가 어렵습니다. 앉을 수 없으므로 처음부터 새로 시작할 수 있습니까? 테스트를 위해 – boje

+0

바로이 문제를 해결할 때 시크릿에 대해 똑같은 것을 발견했습니다. '이 사이트의 HTTPS 강제 설정'설정은 비 시크릿 세션에서 시크릿 세션으로 전송된다는 사실이 드러났습니다. 시크릿 모드는 다른 방향으로 만 작동합니다. 즉, 시크릿 세션에서 HTTPS *를 통해 사이트를 처음 방문한 경우 force-HTTPS가 비 시크릿 세션으로 이동하지 않습니다. 어느 것이 합리적이라고 생각합니다. 브라우저 기록도 마찬가지입니다. 시크릿 세션에서 비 시크릿 이력을 볼 수 있습니다. –

+0

어쨌든, 나는이 문제를 해결했습니다. force-HTTPS는 사용자의 도메인이 아닌 PythonAnywhere 사이트 자체에서만 작동합니다. 그러나 변경 사항을 확인하려면 브라우저 기록을 삭제해야합니다 :-( –

2

http : // https : //로 리디렉션하도록하는 문제가 있습니다. here에 Google 그룹 게시물이 있습니다. 다음 코드는 문제에 대한 아이디어를 제공합니다. db.py 아래에 추가하십시오 :

############ FORCED SSL ############# 
from gluon.settings import global_settings 
if global_settings.cronjob: 
    print 'Running as shell script.' 
elif not request.is_https: 
    redirect(URL(scheme='https', args=request.args, vars=request.vars)) 
    session.secure() 
##################################### 
+0

1. cronjob은 더 이상 걱정할 필요가 없습니다. 'scheduler'가 갈 길이 멀기 때문입니다. . 2. 새로운 모델'secure.py'를 생성 할 수 있습니다. 이런 식으로'.gitignore'를 사용하여 서버에서만이 함수를 사용할 수 있지만 로컬에서는'127.0.0.1 : 8000'을 사용할 수 없습니다 – laviex