我有一个在服务器上运行的 API 和一个连接到它以检索数据的前端客户端。我对跨域问题进行了一些研究并使其有效。但是我不确定发生了什么变化。我现在在控制台中收到此错误:
XMLHttpRequest 无法加载 https://api.mydomain/api/status 。请求的资源上不存在“Access-Control-Allow-Origin”标头。因此不允许访问来源“ http://beta.mydomain.com ”。响应具有 HTTP 状态代码 502。
我有以下路由文件:
var express = require('express');
var router = express.Router();
var Assessment = require('../app/models/assessment');
router.all('*', function (req, res, next) {
res.header('Access-Control-Allow-Origin', '*');
res.header('Access-Control-Allow-Methods', 'PUT, GET, POST, DELETE, OPTIONS');
res.header('Access-Control-Allow-Headers', 'Content-Type');
next();
});
router.post('/api/status', function (req, res, next) {
getStatus.getStatus(req, res, Assessment);
});
module.exports = router;
以下 JavaScript 对该路由进行 Ajax 调用:
var user = {
'uid' : '12345'
};
$.ajax({
data: user,
method: 'POST',
url: 'https://api.mydomain/api/status',
crossDomain: true,
done: function () {
},
success: function (data) {
console.log(JSON.stringify(data));
},
error: function (xhr, status) {
}
});
我试过: 将请求域放在“Access-Control-Allow-Origin”标头中 使用 cors 模块进行快速 将我的 router.all 函数放在中间件中
请求域是 HTTP,api 域是在 HTTPS 上。但是,我在启用 HTTP 时让它工作。
有没有人知道为什么不发送“Access-Control-Allow-Origin”标头?
谢谢
原文由 Tom 发布,翻译遵循 CC BY-SA 4.0 许可协议
而不是将请求标头设置为您的快速路由,您可以尝试将其设置为像这样表达实例本身,
希望这可以帮助!