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

写代码的时候遇到了一个问题,一个 vue 项目,使用 axios 进行 ajax 请求的时候,在 firefox 上面遇到了跨域问题。

  •  
  •   WillieYang · 2018-07-26 10:46:23 +08:00 · 3943 次点击
    这是一个创建于 2072 天前的主题,其中的信息可能已经有所发展或是发生改变。

    后端对跨域已经做了处理,在 chrome 上面可以完美跨域,但是在 firefox 上面的话,前端对后台先发送了一个 options 的预检请求,然后服务器端对预检请求做出的回应也是 200 OK,也返回了相应的 CORS 相关的头信息字段,问题是,之后的话,按理说浏览器会再向后台发送一个 get 的请求,从而得到相应的数据,就像在 chrome 上面一样,但是在 firefox 上面,就没有进一步的请求了,有遇到过相似问题的老哥吗?

    10 条回复    2019-05-07 10:23:19 +08:00
    WillieYang
        1
    WillieYang  
    OP
       2018-07-26 10:50:31 +08:00
    我在 firefox 上面,如果使用了那个 CORS 的插件的话,是可以进行跨域的,不知道是 axios 的原因还是 firefox 的原因,难道是前端在发送完预检请求并成功得到后台的 response 之后,再次发送的 http get request 被浏览器拦截了吗?感觉很奇怪的样子。
    WillieYang
        2
    WillieYang  
    OP
       2018-07-26 10:58:26 +08:00 via Android
    edge 也可以,就是 firefox 不行
    olOwOlo
        3
    olOwOlo  
       2018-07-26 11:03:43 +08:00
    按理说 GET 不会触发预检啊,你确定 GET 的返回头里有 Access-Control-Allow-Origin ?
    WillieYang
        4
    WillieYang  
    OP
       2018-07-26 11:10:22 +08:00 via Android
    @olOwOlo 我看了一下,是有的
    olOwOlo
        5
    olOwOlo  
       2018-07-26 11:20:04 +08:00
    WillieYang
        6
    WillieYang  
    OP
       2018-07-26 11:29:17 +08:00 via Android
    @olOwOlo 自定义头部是什么意思啊?是 access-control-allow-origin 设置成一个特定的 url 吗?
    zenxds
        7
    zenxds  
       2018-07-26 13:06:24 +08:00
    简单请求是不需要发送 option 请求确认的,option 请求就是向服务端请求是否允许客户端做一些特殊操作,比如读取一些自定义头部之类的,这个时候 access-control-allow-origin 不能设置为*,要返回请求的 Origin 字段
    bajie
        9
    bajie  
       2018-12-08 17:30:33 +08:00
    不知道解决了吗,我遇到的问题一毛一样,我是因为在头部自定义了一个 username
    liuYiDao
        10
    liuYiDao  
       2019-05-07 10:23:19 +08:00
    我也遇到了,求解
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   5205 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 34ms · UTC 09:40 · PVG 17:40 · LAX 02:40 · JFK 05:40
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.