有点搞不太东跨域这玩意:
后端我设置了允许所有域名和请求头
def set_default_headers(self, *args, **kwargs):
self.set_header('Access-Control-Allow-Origin', '*')
self.set_header('Access-Control-Allow-Headers', '*')
self.set_header('Access-Control-Allow-Methods', 'POST, GET, PUT, DELETE, OPTIONS')
axios({
method: 'get',
url: '/api/user',
headers: {'jwtoken': '0000000'}
})
这个 0000000 的值该怎么拿到?
后台打印出来的 headers 会多一个 Access-Control-Request-Headers: jwtoken
1
SunriseFox 2019-08-10 18:22:51 +08:00 via Android
Access-Control-Allow-Origin' 的值不能是 '*',必须是具体的 Host
|
2
weixiangzhe 2019-08-10 18:25:14 +08:00 via iPhone
withcredential 还要加下
|
3
whoami9894 2019-08-10 18:53:30 +08:00
因为加了`jwttoken`的请求不属于简单请求,浏览器会先发一个 OPTIONS 预检,你需要先响应这个 OPTIONS 请求返回 ACAO 和 ACAH 头,接着才能收到真正的跨域请求,在真正的跨域请求中就可以直接 headers['jwttoken']
不过不建议自己实现 CORS 的处理,有成熟的库 |
4
aoscici2000 OP @SunriseFox 好像也可以的? 其他 put post 只要 headers 没要求都正常
|
5
aoscici2000 OP @whoami9894 好像有点印象, 之前遇到过一些请求要先走一趟 OPTIONS 的, 先试试, 谢谢哈
|
6
ffeii 2019-08-10 19:11:27 +08:00 via iPhone
|