V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
dzdh
V2EX  ›  问与答

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

  •  
  •   dzdh · 2020-06-30 17:49:23 +08:00 · 1795 次点击
    这是一个创建于 1618 天前的主题,其中的信息可能已经有所发展或是发生改变。
    记得之前项目需要跨域 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
    第 1 条附言  ·  2020-07-01 08:57:19 +08:00
    #7

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

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

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

    并没有……

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

    这是因为请求的首部中携带了 Cookie 信息,如果 Access-Control-Allow-Origin 的值为“*”,请求将会失败。而将 Access-Control-Allow-Origin 的值设置为 http://foo.example,则请求将成功执行。
    yhxx
        8
    yhxx  
       2020-06-30 19:06:47 +08:00
    只有 withCredentials 的时候才不能是*吧
    ihipop
        9
    ihipop  
       2020-06-30 19:31:13 +08:00 via Android
    那只是阿里云的配置,不等于实际的响应,不信你 F12 看下真正请求的响应。
    fe619742721
        10
    fe619742721  
       2020-06-30 19:31:48 +08:00
    Safari 有这个限制
    dzdh
        11
    dzdh  
    OP
       2020-07-01 08:50:30 +08:00
    @ihipop 看上面截图
    dzdh
        12
    dzdh  
    OP
       2020-07-01 08:50:41 +08:00
    @fe619742721 实测并没有
    dzdh
        13
    dzdh  
    OP
       2020-07-01 08:56:10 +08:00
    @Vegetable
    确实是, credentials:'include' 就报错了
    fe619742721
        14
    fe619742721  
       2020-07-01 09:47:00 +08:00 via iPhone
    @dzdh 额,应该是 iOS12 或者 11 的手机 Safari 上有这个限制,之前定位过这个问题
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1018 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 21:10 · PVG 05:10 · LAX 13:10 · JFK 16:10
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.