我有一个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
的所有可能组合,但它总是给出相同的错误。
你能帮我解决一下吗? 提前谢谢。
答案 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
},