回顾
-
通过前几篇文章的内容, 我们已经基于 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()
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Where Wizards Stay Up Late
Katie Hafner / Simon & Schuster / 1998-1-21 / USD 16.00
Twenty five years ago, it didn't exist. Today, twenty million people worldwide are surfing the Net. "Where Wizards Stay Up Late" is the exciting story of the pioneers responsible for creating the most......一起来看看 《Where Wizards Stay Up Late》 这本书的介绍吧!