V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
LeungJZ
V2EX  ›  前端开发

问个 axios 跨域的问题,求大神们解答。

  •  
  •   LeungJZ ·
    JZLeung · 2018-02-22 10:37:49 +08:00 · 2355 次点击
    这是一个创建于 2500 天前的主题,其中的信息可能已经有所发展或是发生改变。

    jQuery 访问没有问题的,axios 就有问题了。

    这是代码:

    这是 chrome 中执行的结果:jQuery 访问没有问题的,axios 就有问题了。

    7 条回复    2018-02-23 07:59:01 +08:00
    viko16
        1
    viko16  
       2018-02-22 10:51:47 +08:00   ❤️ 1
    这里是两个问题:

    1. 写法问题

    $.ajax 应该是 $.ajax({ xhrFields: { withCredentials: true }});

    http://api.jquery.com/jquery.ajax/

    所以你认真看一下 jQuery 发起的请求应该是没带上 Cookies 的


    2. axios 的用法是对的,但是跨域带 Cookie 的时候,Access-Control-Allow-Origin 不能用星号
    LeungJZ
        2
    LeungJZ  
    OP
       2018-02-22 11:16:04 +08:00
    @viko16
    但是这里 cookie 可以不带,因为在 Authorization 中带上了 token,现在就是不知道如何解决 axios 的跨域问题。
    wxsm
        3
    wxsm  
       2018-02-22 11:18:42 +08:00
    这个报错信息已经很明确了。
    huijiewei
        4
    huijiewei  
       2018-02-22 11:19:03 +08:00
    @LeungJZ 不需要带 cookie 就把 withCredentials 设为 false
    LeungJZ
        5
    LeungJZ  
    OP
       2018-02-22 11:39:18 +08:00
    @huijiewei
    我 TM。。。。。好吧,谢谢了,确实设置为 false 就可以了。。。我还以为这个是跨域必须的。。。谢谢。


    @wxsm
    谷歌了很久,发现好像是 withCredentials 的问题,很多都是回复说是 Access-Control-Allow-Origin 的问题。 #4 已经帮我解答了,同时也感谢你的回答。
    fyh1807008
        6
    fyh1807008  
       2018-02-22 11:39:40 +08:00
    Authorization 是自定义 header,Access-Control-Allow-Origin 不能用星号
    chen90902
        7
    chen90902  
       2018-02-23 07:59:01 +08:00 via Android
    携带 cookie 的请求, Access-Control-Allow-Origin 不能设置为*
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2746 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 21ms · UTC 14:28 · PVG 22:28 · LAX 06:28 · JFK 09:28
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.