我在同一台服务器mydomain.com
和api.mydomain.com
现在在我的api中我添加了以下内容来处理access-origin:
app.use(function (req, res, next) {
// CORS headers
res.header('Access-Control-Allow-Origin', '*');
res.header('Access-Control-Allow-Methods', 'PUT, GET, POST, DELETE, OPTIONS');
res.header("Access-Control-Allow-Headers",
"Origin, X-Requested-With, Content-Type, Accept, x-access-token, Cache-Control, Pragma"
);
next();
});
但是,当我尝试向此api
发出请求时,我收到以下错误:
XMLHttpRequest无法加载https://api.mydomain.dk/login。回应 预检请求未通过访问控制检查:否 '访问控制允许来源'标题出现在请求的上 资源。起源' https://www.mydomain.dk'因此是不允许的 访问。
有谁能告诉我我失踪了什么?
答案 0 :(得分:1)
订单很重要,您必须在路线前执行此操作:
app.use(function(req, res, next) {
res.header("Access-Control-Allow-Origin", "*");
res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept");
next();
});
app.get('/', function(req, res, next) {
// Handle the get for this route
});
app.post('/', function(req, res, next) {
// Handle the post for this route
});
我建议使用cors express模块。
编辑:
在apache上启用CORS分为两步。首先,你必须创建一个 文件名为.htaccess并将其添加到您的目录中 跨域友好的文件。我们建议您创建一个新的 这个目录。该文件必须包含以下代码(第2行 和3可以是可选的):
标题始终设置Access-Control-Allow-Origin" *"标头集 Access-Control-Allow-Headers" origin,x-requested-with,content-type" 标题集Access-Control-Allow-Methods" PUT,GET,POST,DELETE, OPTIONS"
此过程的第二步是启用.htaccess文件。测试出 CORS请求并查看它们是否已经在运行(有些 Apache的安装附带.htaccess文件已经启用)。在 为了测试它是否正常工作,重新加载apache(使用下面的命令) 然后在你的服务器上激活你的ajax请求。
sudo service apache2 restart
如果有效,你就完成了。如果没有,那么你需要添加 在您的VirtualHosts部分中的以下代码 / etc / apache2 / sites-available文件夹中的000-default.conf:
选项索引FollowSymLinks MultiViews AllowOverride All Order允许,拒绝所有
允许确保将/ var / www /替换为您的实际路径 文件根。恭喜!你做完了!