请教关于 CORS 中 Access-Control-Allow-Credentials 的问题 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
ppy
V2EX    程序员

请教关于 CORS 中 Access-Control-Allow-Credentials 的问题

  •  
  •   ppy 2017-02-15 15:11:29 +08:00 16046 次点击
    这是一个创建于 3163 天前的主题,其中的信息可能已经有所发展或是发生改变。

    我在后端代码在响应头中设置了

    Access-Control-Allow-Credentials : true Access-Control-Allow-Origin:* 

    按照 CORS 的规则: https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Access_control_CORS#附带凭证信息的请求 ,这个响应应该会失败。

    但实际上结果是这样的

    Access-Control-Allow-Credentials:true Access-Control-Allow-Origin:* Connection:keep-alive Content-Length:2514 Content-Type:application/json 

    响应也成功了。

    请大佬指教- -

    第 1 条附言    2017-02-15 15:58:55 +08:00
    - -是我对 CORS 认识不清,在开发的过程中,前端启用了 chrome 的 disable-web-security 的设置。

    开发完成以后我部署到线上环境,前后端是同一个 host 所以不存在跨域的问题,所以这个 Access-Control-Allow-Credentials 和 Access-Control-Allow-Origin 的设置也就没有意义了
    9 条回复    2018-12-12 01:30:50 +08:00
    ferrum
        1
    ferrum  
       2017-02-15 15:15:43 +08:00 via iPhone
    不太懂在问什么,但后端设置了这样的 header ,跨域请求时, withCredentials 为 true 的请求应该会带上 cookies 的。
    Arrowing
        2
    Arrowing  
       2017-02-15 15:16:25 +08:00
    如果是需要带 cookie 等验证信息的请求,请加上
    xhrFields: {
    withCredentials: true
    }
    参数,参照 jQuery1.5.1+的文档

    http://www.css88.com/jqapi-1.9/jQuery.ajax/
    ppy
        3
    ppy  
    OP
       2017-02-15 15:22:55 +08:00
    @ferrum 目的是想通过 CORS 的规则,让前端请求接口的时候带上 cookies ,所以设置了 Access-Control-Allow-Credentials : true 这样的响应头,同时之前设置的 Access-Control-Allow-Origin:*。这里按照文档应该会导致前端的这次请求失败,但结果是没有。

    withCredentials:true 是 jq 里面请求带上验证信息,这我知道。
    ppy
        4
    ppy  
    OP
       2017-02-15 15:25:23 +08:00
    @Arrowing 嗯 withCredentials: true 前端这样设置了,的确将 cookies 信息传递上来了,但我困惑的是 CORS 规则里面说到:给一个带有 withCredentials 的请求发送响应的时候, 服务器端必须指定允许请求的域名,不能使用'*'.如果响应头是这样的:Access-Control-Allow-Origin: * ,则响应会失败.
    ferrum
        5
    ferrum  
       2017-02-15 15:37:56 +08:00
    噢,这个问题我以前也遇到过,正常情况下,浏览器会把响应拦截了,你是通过浏览器访问的吗,还是浏览器做了如 Chrome 的 disable-web-security 的设置?
    ppy
        6
    ppy  
    OP
       2017-02-15 15:56:25 +08:00
    @ferrum Chrome 的 disable-web-security 的设置。
    哦你这么一说这个设置我知道为什么我会困惑了,其实没有发生跨域的问题。

    服务端这么设置了,前端开发的时候使用了 Chrome 的 disable-web-security 的设置,所以浏览器没有拦截响应。

    而我访问已经上线的前端页面时,因为前后端都是部署在同一个 host 上的所以不存在跨域的问题。

    那我还想在问一个问题,前端在本地开发的时候,会跨域,服务端的 Access-Control-Allow-Origin 应该如何设置呢,
    前端的文件在浏览器都是电脑内文件的地址。
    cfy
        7
    cfy  
       2017-02-15 16:32:38 +08:00
    我最近也遇到 CORS 的问题,

    如果服务端是 Nginx 的话,可以参考 https://gist.github.com/pauloricardomg/7084524

    if ($http_origin ~* ( https?://.*\.example\.com(:[0-9]+)?$)) {
    add_header Access-Control-Allow-Origin: $http_origin;
    }
    ppy
        8
    ppy  
    OP
       2017-02-16 09:20:59 +08:00
    @cfy 嗯 还可以这样在 nginx 中设置 这样可以把跨域的设置从代码中解耦出来 涨姿势了。
    734695609
        9
    734695609  
       2018-12-12 01:30:50 +08:00
    @cfy 同一 IP 的不同端口也是跨域的。
    针对你的这句话:而我访问已经上线的前端页面时,因为前后端都是部署在同一个 host 上的所以不存在跨域的问题。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     5920 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 25ms UTC 02:37 PVG 10:37 LAX 19:37 JFK 22:37
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86