背景
有项目要和Vue进行互通,当时就选择了python搭建了一个超简单的http server,直接使用http.server
,然后我本机作为服务器,等待有缘人来连接,接收POST
协议,协议内包含了head
字段:Authorization
,结果就报错了。
解决
其实比较简单,就是我们Server允许http的其他地方访问,一般涉及这3个:Access-Control-Allow-Origin、Access-Control-Allow-Methods、Access-Control-Allow-Headers
Head,只需要在do_OPTIONS
方法里交代可以来就好了。在Vue那边还是可以看到先请求了OPTIONS
,如果允许了会再次请求POST
。
大概网上挖了一下,如果代码重合全是巧合(哈哈)
def _send_cors_headers(self):
""" Sets headers required for CORS """
self.send_header('Content-type', 'application/json')
self.send_header("Access-Control-Allow-Origin", "*")
self.send_header("Access-Control-Allow-Methods", "*")
self.send_header("Access-Control-Allow-Headers", "Authorization, Content-Type")
# 跨域问题
def do_OPTIONS(self):
self.send_response(200)
self._send_cors_headers()
self.end_headers()
主要是要指明,除去基本默认的header以外,还可以用Authorization
即可。