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

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

回顾

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

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》 这本书的介绍吧!

JSON 在线解析
JSON 在线解析

在线 JSON 格式化工具

XML、JSON 在线转换
XML、JSON 在线转换

在线XML、JSON转换工具

HEX HSV 转换工具
HEX HSV 转换工具

HEX HSV 互换工具