axios 跨域请求 headers 问题

2019-08-10 15:13:40 +08:00
 aoscici2000

有点搞不太东跨域这玩意:

后端我设置了允许所有域名和请求头

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

4379 次点击
所在节点    Vue.js
6 条回复
SunriseFox
2019-08-10 18:22:51 +08:00
Access-Control-Allow-Origin' 的值不能是 '*',必须是具体的 Host
weixiangzhe
2019-08-10 18:25:14 +08:00
withcredential 还要加下
whoami9894
2019-08-10 18:53:30 +08:00
因为加了`jwttoken`的请求不属于简单请求,浏览器会先发一个 OPTIONS 预检,你需要先响应这个 OPTIONS 请求返回 ACAO 和 ACAH 头,接着才能收到真正的跨域请求,在真正的跨域请求中就可以直接 headers['jwttoken']
不过不建议自己实现 CORS 的处理,有成熟的库
aoscici2000
2019-08-10 19:06:14 +08:00
@SunriseFox 好像也可以的? 其他 put post 只要 headers 没要求都正常
aoscici2000
2019-08-10 19:07:13 +08:00
@whoami9894 好像有点印象, 之前遇到过一些请求要先走一趟 OPTIONS 的, 先试试, 谢谢哈
ffeii
2019-08-10 19:11:27 +08:00

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/590716

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX