V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
aoscici2000
V2EX  ›  Vue.js

axios 跨域请求 headers 问题

  •  
  •   aoscici2000 · 2019-08-10 15:13:40 +08:00 · 4509 次点击
    这是一个创建于 1968 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

    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

    6 条回复    2019-08-10 19:11:27 +08:00
    SunriseFox
        1
    SunriseFox  
       2019-08-10 18:22:51 +08:00 via Android
    Access-Control-Allow-Origin' 的值不能是 '*',必须是具体的 Host
    weixiangzhe
        2
    weixiangzhe  
       2019-08-10 18:25:14 +08:00 via iPhone
    withcredential 还要加下
    whoami9894
        3
    whoami9894  
       2019-08-10 18:53:30 +08:00
    因为加了`jwttoken`的请求不属于简单请求,浏览器会先发一个 OPTIONS 预检,你需要先响应这个 OPTIONS 请求返回 ACAO 和 ACAH 头,接着才能收到真正的跨域请求,在真正的跨域请求中就可以直接 headers['jwttoken']
    不过不建议自己实现 CORS 的处理,有成熟的库
    aoscici2000
        4
    aoscici2000  
    OP
       2019-08-10 19:06:14 +08:00
    @SunriseFox 好像也可以的? 其他 put post 只要 headers 没要求都正常
    aoscici2000
        5
    aoscici2000  
    OP
       2019-08-10 19:07:13 +08:00
    @whoami9894 好像有点印象, 之前遇到过一些请求要先走一趟 OPTIONS 的, 先试试, 谢谢哈
    ffeii
        6
    ffeii  
       2019-08-10 19:11:27 +08:00 via iPhone
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2855 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 34ms · UTC 14:01 · PVG 22:01 · LAX 06:01 · JFK 09:01
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.