【发布时间】:2017-03-05 20:54:30
【问题描述】:
我在我的网站上使用 Express 并使用凭据 xhr。我想从http://admin.example.com 或http://service1.example.com 向http://example.com 请求,这是我在快递服务器中的Access-Control-Allow-Origin 部分:
// 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();
});
但是当我尝试从 http://admin.example.com 到 http://example.com 的凭证 xhr 时,它失败了:
Fetch API 无法加载
http://example.com/api/v1/authentication/signin。 对预检请求的响应未通过访问控制检查: 'Access-Control-Allow-Origin' 标头有一个值 'http://*.example.com' 这不等于提供的来源。起源 'http://admin.example.com' 因此不允许访问。有 服务器发送带有有效值的标头,或者,如果响应不透明 满足您的需求,将请求的模式设置为“no-cors”以获取 禁用 CORS 的资源。
看起来是因为浏览器不明白*.example.com到底是什么意思,拒绝请求。
我想从这些域中请求:
- example.com
- admin.example.com
- service1.example.com
- service2.example.com
- [任何东西].example.com
我正在为 XHR 使用 Fetch API,并设置 credentials: true。有什么我错过的吗?任何建议都会非常感激。
【问题讨论】:
标签: ajax express xmlhttprequest cors