Web 开发学习笔记(4) --- 重定向与HSTS

栏目: Python · 发布时间: 7年前

回顾

  • 通过前几篇文章的内容, 我们已经基于 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()

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Powerful

Powerful

Patty McCord / Missionday / 2018-1-25

Named by The Washington Post as one of the 11 Leadership Books to Read in 2018 When it comes to recruiting, motivating, and creating great teams, Patty McCord says most companies have it all wrong. Mc......一起来看看 《Powerful》 这本书的介绍吧!

CSS 压缩/解压工具
CSS 压缩/解压工具

在线压缩/解压 CSS 代码

URL 编码/解码
URL 编码/解码

URL 编码/解码

正则表达式在线测试
正则表达式在线测试

正则表达式在线测试