如何在Sails.js中为自定义路由启用CORS

时间:2017-01-16 07:06:08

标签: javascript angularjs node.js cors sails.js

我有一个Angular 1.x应用程序,它在我的Sails.js应用程序中调用API。每当我尝试从我的Angular应用程序调用API时,我都会得到这个 -

XMLHttpRequest cannot load http://localhost:1337/portal/login. Response to preflight request doesn't pass access control check: The 'Access-Control-Allow-Origin' header contains the invalid value ''. Origin 'http://localhost:8080' is therefore not allowed access.

由于我的Sails.js应用程序有很多其他API不会在这个Angular应用程序上使用,我不想通过在config / cors.js中设置allRoutes: true来对所有这些应用CORS。所以我按照Sails.js的文档编写了这样的自定义CORS配置 -

    '/portal/login': {
        target: 'MyController.login',
        cors: {
            origin: '*',
            credentials: true,
            methods: 'GET, POST, PUT, DELETE, OPTIONS, HEAD, PATCH',
            headers: 'content-type, Authorization'
        }
    }

但它不起作用。如果我启用allRoutes: true然后它开始工作但我不想在我的所有路由上启用CORS并公开它们。我已经尝试了origin, credentials, methods, headers的所有可能组合,但它总是给出相同的错误。

你能帮我解决一下吗? 提前谢谢。

2 个答案:

答案 0 :(得分:0)

您可以通过在config文件夹内的Sails.js安全文件中启用CORS来做到这一点:

config/security.js

这是它的代码:

cors: {
    allRoutes: true,
    allowOrigins: '*',
    allowCredentials: false,
}

您可以在Sails.js官方文档中查看其参考: https://sailsjs.com/documentation/concepts/security/cors

答案 1 :(得分:-1)

这在\ config \ security.js中对我有用

cors: {
allRoutes: true,
    allowOrigins: [
  'http://localhost:1337',
  'http://localhost:8100',
  'http://localhost',
    ],
    allowCredentials: true,
    allowRequestHeaders:'content-type'
//allowCredentials: false

},