回顾
-
通过前几篇文章的内容, 我们已经基于 Python 的 Flask 框架搭建了一个基本 Web 应用,
~/webapp/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自带的网络库写一个简单的server, 把它当成一个练手的 demo.结合文档 wsgiref , 我们可以写出如下代码
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\n" % (key, value)).encode("utf-8") for key, value in environ.items()] return ret with make_server('', 80, simple_app) as httpd: httpd.serve_forever()
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Coming of Age in Second Life
Tom Boellstorff / Princeton University Press / 2008-04-21 / USD 29.95
The gap between the virtual and the physical, and its effect on the ideas of personhood and relationships, is the most interesting aspect of Boellstorff's analysis... Boellstorff's portrayal of a virt......一起来看看 《Coming of Age in Second Life》 这本书的介绍吧!