【问题标题】:SailsJS - CORS - The 'Access-Control-Allow-Origin' header contains the invalid value ''SailsJS - CORS - “Access-Control-Allow-Origin”标头包含无效值“”
【发布时间】:2018-03-30 20:46:17
【问题描述】:

我生成了一个新的sails.js 应用程序并创建了一个测试API,如下所示。

module.exports = {
     test:function (req, res) {
        return res.ok({success: true});
    },
}

sails 应用托管在独立的本地计算机上,地址为192.168.3.208:1337

我的CORS 配置如下。

module.exports.cors = {
  origin: '*',
  credentials: true,
};

当我从本地机器 (192.168.3.210) 对 API 进行简单的 AJAX 调用时,

$.ajax({
    type: 'GET',
    url: 'http://192.168.3.208:1337/api/test',
    dataType: 'json',
    success: function(data) {
        console.log(data);
    },
    failure: function(data) {
        console.log(data);
    }
});

我收到以下错误

无法加载http://192.168.3.208:1337/api/test: “Access-Control-Allow-Origin”标头包含无效值“”。 因此,不允许访问 Origin 'http://localhost'。

html 页面在 Apache 的 80 端口托管。

我在这里错过了什么?

【问题讨论】:

  • 请参阅sailsjs.com/documentation/concepts/security/cors#?warning,了解为什么不应该尝试将origin: '*' credentials: true 结合使用。我想在测试期间你可以尝试设置 ``origin: 'localhost' ' 并查看它是否有效 - 在生产中,将 origin 值更改为您希望允许带有凭据的请求的任何真实来源。您通常希望避免允许来自任意来源的凭据请求。
  • allRoutes: true, 添加到cors 配置。

标签: ajax apache nginx cors sails.js


【解决方案1】:

这样就解决了问题

module.exports.cors = {
  origin: '*', // Required whitelist
  credentials: true,
  headers: ['Authorization', 'content-type', 'user-agent']
};

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-09-09
    • 2018-09-19
    • 2019-06-19
    • 2016-10-02
    • 2020-02-04
    • 2019-01-08
    相关资源
    最近更新 更多