dzdh
V2EX  ›  问与答

我是出现幻觉了吗 我记得 allow-origin/allow-headers 不是被禁止用 * 了吗

  •  
  •   dzdh · Jun 30, 2020 · 2540 views
    This topic created in 2320 days ago, the information mentioned may be changed or developed.
    记得之前项目需要跨域 php 程序里写 header

    access-control-allow-origin: *

    chrome console 会报错,大概说 必须明确写明允许哪个 origin ( http://origin-domain) 星号的写法即将被抛弃啥的

    刚才在阿里云的 cdn 里试了试 直接在后台配置 http response header 里设置 allow-origin:*, allow-headers:* 居然可以正常在 chrome 里使用,跨域都没问题,也没发起 options 请求 这是什么神奇原理?

    chrome 版本:83.0.4103.116
    Supplement 1  ·  Jul 1, 2020
    #7

    附带身份凭证的请求与通配符
    对于附带身份凭证的请求,服务器不得设置 Access-Control-Allow-Origin 的值为“*”。

    这是因为请求的首部中携带了 Cookie 信息,如果 Access-Control-Allow-Origin 的值为“*”,请求将会失败。而将 Access-Control-Allow-Origin 的值设置为 http://foo.example,则请求将成功执行。
    14 replies  •  2020-07-01 09:47:00 +08:00
    xiaowei0823
    xiaowei0823
    Jun 30, 2020
    1
    用 Firefox 试试
    dzdh
    dzdh
    OP
    Jun 30, 2020
    3
    @xiaowei0823 没报错。。。network 栏正常 response 内容输出正常 $.ajax 也正常
    mxT52CRuqR6o5
    mxT52CRuqR6o5
    Jun 30, 2020 via Android
    4
    @dzdh 简单请求,允许*,复杂请求不行,就是那些会触发 options 的就不行
    dzdh
    dzdh
    OP
    Jun 30, 2020
    5
    @mxT52CRuqR6o5

    https://i.loli.net/2020/06/30/aXKISxj1LGp8Jgu.png

    并没有……

    chrome 同样……就不发图了
    Vegetable
    Vegetable
    Jun 30, 2020
    6
    是的,你记错了
    是这里
    https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS#Requests_with_credentials
    某些特殊情况不能是通配符
    Vegetable
    Vegetable
    Jun 30, 2020❤️3
    7
    附带身份凭证的请求与通配符
    对于附带身份凭证的请求,服务器不得设置 Access-Control-Allow-Origin 的值为“*”。

    这是因为请求的首部中携带了 Cookie 信息,如果 Access-Control-Allow-Origin 的值为“*”,请求将会失败。而将 Access-Control-Allow-Origin 的值设置为 http://foo.example,则请求将成功执行。
    yhxx
    yhxx
    Jun 30, 2020
    8
    只有 withCredentials 的时候才不能是*吧
    ihipop
    ihipop
    Jun 30, 2020 via Android
    9
    那只是阿里云的配置,不等于实际的响应,不信你 F12 看下真正请求的响应。
    fe619742721
    fe619742721
    Jun 30, 2020
    10
    Safari 有这个限制
    dzdh
    dzdh
    OP
    Jul 1, 2020
    11
    @ihipop 看上面截图
    dzdh
    dzdh
    OP
    Jul 1, 2020
    12
    @fe619742721 实测并没有
    dzdh
    dzdh
    OP
    Jul 1, 2020
    13
    @Vegetable
    确实是, credentials:'include' 就报错了
    fe619742721
    fe619742721
    Jul 1, 2020 via iPhone
    14
    @dzdh 额,应该是 iOS12 或者 11 的手机 Safari 上有这个限制,之前定位过这个问题
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   1051 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 39ms · UTC 19:05 · PVG 03:05 · LAX 11:05 · JFK 14:05
    ♥ Do have faith in what you're doing.