节点原点即使设置了标头

时间:2017-08-19 23:29:32

标签: javascript node.js express

我在同一台服务器mydomain.comapi.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'因此是不允许的   访问。

有谁能告诉我我失踪了什么?

1 个答案:

答案 0 :(得分:1)

订单很重要,您必须在路线前执行此操作:

Example Code :

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模块​​。

编辑:

  

Enable Cors Nodejs Apache

     

在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 /替换为您的实际路径   文件根。恭喜!你做完了!