gpt4 book ai didi

ajax - 在 Access-Control-Allow-Origin 中为子域使用通配符

转载 作者:行者123 更新时间:2023-12-04 18:59:51 31 4
gpt4 key购买 nike

我正在为我的网站使用 Express 并使用凭证 xhr。我要申请到http://example.com来自 http://admin.example.comhttp://service1.example.com ,这是我的 Access-Control-Allow-Origin加入 express 服务器:

// CORS
app.use((req, res, next) => {
res.setHeader('Access-Control-Allow-Origin', 'http://*.example.com');
res.setHeader('Access-Control-Allow-Headers', 'X-Requested-With,Content-Type');
res.setHeader('Access-Control-Allow-Methods', 'GET, POST, OPTIONS, PUT, DELETE');
next();
});

但是当我尝试来自 的凭证 xhr 时http://admin.example.com http://example.com ,它失败了:

Fetch API cannot load http://example.com/api/v1/authentication/signin. Response to preflight request doesn't pass access control check: The 'Access-Control-Allow-Origin' header has a value 'http://*.example.com' that is not equal to the supplied origin. Origin 'http://admin.example.com' is therefore not allowed access. Have the server send the header with a valid value, or, if an opaque response serves your needs, set the request's mode to 'no-cors' to fetch the resource with CORS disabled.



看起来是浏览器不明白是什么原因引起的 *.example.com意味着,并拒绝请求。

我想从这些域请求:
  • example.com
  • admin.example.com
  • service1.example.com
  • service2.example.com
  • [任何东西].example.com

  • 我正在为 XHR 使用 Fetch API,并设置 credentials: true .有什么我错过的吗?任何建议都会非常感激。

    最佳答案

    我同意德里克的评论。另一件事是,源头可以被欺骗,所以这不是一个安全的解决方案。

    app.use(function (req, res, next) {
    if (req.headers.origin.endsWith('example.com')) {
    res.setHeader('Access-Control-Allow-Origin', 'http://' + req.headers.origin)
    res.setHeader('Access-Control-Allow-Headers', 'X-Requested-With,Content-Type')
    res.setHeader('Access-Control-Allow-Methods', 'GET, POST, OPTIONS, PUT, DELETE')
    }
    next()
    })

    关于ajax - 在 Access-Control-Allow-Origin 中为子域使用通配符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40212326/

    31 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com