【发布时间】:2017-05-30 23:28:46
【问题描述】:
我有一个 Angular 1.x 应用程序,它在我的 Sails.js 应用程序中调用 API。每当我尝试从我的 Angular 应用程序调用 API 时,我都会得到这个 -
XMLHttpRequest cannot load @987654321@. Response to preflight request doesn't pass access control check: The 'Access-Control-Allow-Origin' header contains the invalid value ''. Origin '@987654322@' is therefore not allowed access.
由于我的 Sails.js 应用程序有很多其他 API 不会在这个 Angular 应用程序上使用,我不想通过在 config/cors.js 中设置 allRoutes: true 来对所有这些 API 应用 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 的所有可能组合,但它总是给出相同的错误。
你能帮我解决这个问题吗? 提前致谢。
【问题讨论】:
-
如果您查看浏览器中的开发人员工具,您能看到 CORS 数据是如何发送的吗?使用它来验证您在请求和响应中获得了正确的质询/响应条目。有一些good resources 可以帮助您更好地理解CORS。值得努力阅读,因为理解 CORS 会对您有很大帮助,一旦您掌握了它的要点,这并不难。
-
您是否尝试查看文档?似乎涵盖了这一点:sailsjs.com/documentation/concepts/security/…
标签: javascript angularjs node.js cors sails.js