웹 개발 학습 노트 (4) - 재 정립 및 HSTS
Flask
프레임 워 크 를 기반 으로 하 는 간단 한 Web
응용 프로그램 을 구축 했다. server.py
의 코드 는 다음 과 같다 from flask import Flask
from flask.views import MethodView
app = Flask(__name__)
class IndexHandler(MethodView):
def __init__(self, name):
print(name)
def get(self):
return 'It is a GET request'
def post(self):
return 'It is a POST request'
if __name__ == '__main__':
app.add_url_rule('/', view_func=IndexHandler.as_view('index'))
context = ('./server.cer', './server.key')
app.run(port=443, host='0.0.0.0', debug=True, threaded=True, ssl_context=context)
. 또한 우 리 는 이 를 위해 공공 네트워크 IP 와 도 메 인 이름 www.awesome.com
을 신청 하고 Let 's Encrypt 의 HTTPS 인증 서 를 배치 했다. 현재 브 라 우 저 주소 표시 줄 에 입력 https://www.awesome.com
할 때우리 사 이 트 를 방문 할 수 있 습 니 다. 1. http://www.awesome.com
2. https:// https
이 를 위해 저 희 는 server
포트 를 다시 작성 하고 감청 80
포트 를 다시 작성 해 야 합 니 다. 모든 요청 에 응답 하고 모든 redirect
요청 을 http
요청 으로 재 설정 해 야 합 니 다. 마지막 으로 저 희 는 https
을 켜 서 사용자 에 게 편 의 를 제공 할 것 입 니 다.안전성 을 높이 는 동시에 잘못된 접근 을 줄 입 니 다. HSTS
포트80
를 버 리 고 Flask
자체 가 가지 고 있 는 네트워크 라 이브 러 리 로 간단 한 Python
을 써 서 그것 을 연습 하 는 demo 로 생각 하 는 것 이 좋 겠 다. 문서 와 결합 하여 우 리 는 server
를 새로 만 들 고 다음 과 같은 내용 from wsgiref.util import setup_testing_defaults
from wsgiref.simple_server import make_server
def simple_app(environ, start_response):
status = '200 OK'
headers = [('Content-type', 'text/plain; charset=utf-8')]
start_response(status, headers)
ret = [("%s: %s
" % (key, value)).encode("utf-8") for key, value in environ.items()]
return ret
with make_server('0.0.0.0', 80, simple_app) as httpd:
httpd.serve_forever()
~/webapp/redirect.py
요청 을 http
요청 으로 재 설정 합 니 다.https
을 실현 하기 위해 우 리 는 이런 하 나 를 구성 해 야 한다 redirect
.http response
은 Status Code
301 Moved Permanently
에는 redirect 의 목표 주소 headers
가 포함 되 어 있 습 니 다. 그 중에서... 사용자 가 요청 한 Location: https://...
입 니 다. 예 를 들 어 첫 페이지 URI
는 바로 URI
입 니 다. 다음은 이것 https://www.awesome.com/
을 예 로 들 면. URI
을 비 워 두 면 된다 response body
HTTP/1.1 301 Moved Permanently
Content-length: 0
Location: https://www.awesome.com/
을 얻 을 수 있다. 우 리 는 이에 따라 response headers
의 내용 from wsgiref.util import request_uri
from wsgiref.simple_server import make_server
def simple_app(environ, start_response):
uri = request_uri(environ) # client URI
location = uri[:4] + 's' + uri[4:] # http https
status = '301 Moved Permanently' # Status Code
headers = [ ('Content-length', '0'), ('Location', location) ] # headers
start_response(status, headers)
return b''
httpd = make_server('0.0.0.0', 80, simple_app)
httpd.serve_forever()
redirect.py
은 이미 완성 되 었 습 니 다. 우 리 는 server
디 렉 터 리 아래 에 ~/webapp/
하 나 를 열 고 다음 명령 python3 redirect.py
을 실행 합 니 다. 이어서 우 리 는 브 라 우 저의 개발 자 도 구 를 열 고 주소 표시 줄 에 입력 합 니 다 Terminal
. 만약 모든 것 이 순조롭다 면 개발 자 도구 에서 www.awesome.com
점프 를 볼 수 있 습 니 다.그리고 다시 301
오픈
https://www.awesome.com
HSTS
을 열기 위해 서 는 HSTS
에 다음 과 같은 기록 Strict-Transport-Security: max-age=15768000; includeSubDomains; preload
이상 의 내용 을 추가 하여 http response headers
서 비 스 를 제공 하 는 https
에 추가 하면 되 기 때문에 수정 server
이 필요 합 니 다. 먼저 ~/webapp/server.py
을 도입 한 다음 make_response
방법 에서 생 성 get()
하여 원래 의 생 성 응답 방법 을 교체 해 야 합 니 다. 이 어 새로운 방법 을 추가 합 니 다.resp = make_response('It is a GET request')
기록 headers
. 따라서 다음 과 같다 resp.headers['Strict-Transport-Security']
from flask import Flask, make_response
from flask.views import MethodView
app = Flask(__name__)
class IndexHandler(MethodView):
def get(self):
resp = make_response('It is a GET request')
resp.headers['Strict-Transport-Security'] = 'max-age=15768000; includeSubDomains; preload'
return resp
if __name__ == '__main__':
app.add_url_rule('/', view_func=IndexHandler.as_view('index'))
context = ('./server.cer', './server.key')
app.run(port=443, host='0.0.0.0', debug=True, threaded=True, ssl_context=context)
server.py
을 한 후에 우 리 는 server.py
python3 server.py
을 실 행 했 습 니 다. 이 어 우 리 는 흔적 없 는 모드 로 방문 server.py
했 습 니 다. 개발 자 도구 에서 우 리 는 먼저 www.awesome.com
점프 를 볼 수 있 습 니 다. 그리고 자동 으로 진행 되 는 301
에 대한 요청 을 한 후에 우 리 는 https://www.awesome.com
에 새로 추 가 된 response headers
을 볼 수 있 습 니 다.기록 되 었 습 니 다. 이때 만약 에 우리 가 다시 입력 Strict-Transport-Security
하면 개발 자 도구 에서 볼 수 있 습 니 다. 점프 코드 는 www.awesome.com
에서 301
, 즉 307
로 바 뀌 었 습 니 다. 이것 은 브 라 우 저 내부 에서 진행 되 는 방향 입 니 다. 브 라 우 저 는 우리 의 Internal Redirect
를 거치 지 않 고 우리 의 http
로 바 꿔 주 었 습 니 다.불필요 한 방문 을 줄 였 습 니 다. 이것 도 https
가 가 져 온 좋 은 점 중 하나 입 니 다. redirect.py
에 어떻게 가입 하 는 지 설명 하고 자 한다 HSTS
. http response headers
에 관 한 내용 을 더 알 고 싶다 면 이 블 로그: HSTS 학습 노트 를 참고 할 수 있다. 이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
빠른 팁: SingleStoreDB의 데이터 API 사용SingleStoreDB는 HTTP 연결을 통해 SQL 문을 실행하는 데 사용할 수 있는 을 제공합니다. 이 짧은 문서에서는 이 데이터 API를 사용하는 방법에 대한 예를 보여줍니다. A는 무료 SingleStore...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.