WillieYang

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

  •  
  •   WillieYang · Jul 26, 2018 · 4986 views
    This topic created in 2875 days ago, the information mentioned may be changed or developed.

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

    10 replies    2019-05-07 10:23:19 +08:00
    WillieYang
        1
    WillieYang  
    OP
       Jul 26, 2018
    我在 firefox 上面,如果使用了那个 CORS 的插件的话,是可以进行跨域的,不知道是 axios 的原因还是 firefox 的原因,难道是前端在发送完预检请求并成功得到后台的 response 之后,再次发送的 http get request 被浏览器拦截了吗?感觉很奇怪的样子。
    WillieYang
        2
    WillieYang  
    OP
       Jul 26, 2018 via Android
    edge 也可以,就是 firefox 不行
    olOwOlo
        3
    olOwOlo  
       Jul 26, 2018
    按理说 GET 不会触发预检啊,你确定 GET 的返回头里有 Access-Control-Allow-Origin ?
    WillieYang
        4
    WillieYang  
    OP
       Jul 26, 2018 via Android
    @olOwOlo 我看了一下,是有的
    olOwOlo
        5
    olOwOlo  
       Jul 26, 2018
    WillieYang
        6
    WillieYang  
    OP
       Jul 26, 2018 via Android
    @olOwOlo 自定义头部是什么意思啊?是 access-control-allow-origin 设置成一个特定的 url 吗?
    zenxds
        7
    zenxds  
       Jul 26, 2018
    简单请求是不需要发送 option 请求确认的,option 请求就是向服务端请求是否允许客户端做一些特殊操作,比如读取一些自定义头部之类的,这个时候 access-control-allow-origin 不能设置为*,要返回请求的 Origin 字段
    bajie
        9
    bajie  
       Dec 8, 2018
    不知道解决了吗,我遇到的问题一毛一样,我是因为在头部自定义了一个 username
    liuYiDao
        10
    liuYiDao  
       May 7, 2019
    我也遇到了,求解
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   908 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 33ms · UTC 20:55 · PVG 04:55 · LAX 13:55 · JFK 16:55
    ♥ Do have faith in what you're doing.