javascript - Access-Control-Allow-Origin 不允许 Origin <origin>

标签 javascript node.js ajax google-chrome cors

XMLHttpRequest cannot load http://localhost:8080/api/test. Origin http://localhost:3000 is not allowed by Access-Control-Allow-Origin. 

我阅读了有关跨域 ajax 请求的信息,并了解了潜在的安全问题。在我的例子中,有 2 台服务器在本地运行,并且喜欢在测试期间启用跨域请求。

localhost:8080 - Google Appengine dev server
localhost:3000 - Node.js server

当我的页面从 Node 服务器加载时,我正在向 localhost:8080 - GAE 服务器 发出 ajax 请求。什么是最简单、最安全的(不想使用 disable-web-security 选项启动 chrome)。如果我必须更改 'Content-Type',我应该在 Node 服务器上进行吗?怎么样?

最佳答案

由于它们运行在不同的端口上,它们是不同的 JavaScript origin。它们在同一台机器/主机名上并不重要。

您需要在服务器 (localhost:8080) 上启用 CORS。看看这个网站:http://enable-cors.org/

您需要做的就是向服务器添加一个 HTTP header :

Access-Control-Allow-Origin: http://localhost:3000

或者,为简单起见:

Access-Control-Allow-Origin: *

如果您的服务器尝试设置 cookie 并且您使用 withCredentials = true

,请不要使用“*”

when responding to a credentialed request, server must specify a domain, and cannot use wild carding.

You can read more about withCredentials here

关于javascript - Access-Control-Allow-Origin 不允许 Origin <origin>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18642828/

相关文章:

javascript - 如何验证一个整数是否是JavaScript中的有效日期?

javascript - 从路由获取数据到脚本标签?

node.js - async.map 不会在 nodejs 中调用回调

javascript - AJAX 调用忽略表单验证

c# - 在 asp.net MVC 中调用 AJAX 后呈现 View

javascript - Backbone.js 中的 setTimeout() 函数

javascript - 正则表达式以及将字符串转换为数组以及来回 Javascript

node.js - 使用 Mongoose 查询

javascript - Mongoose 批量更新/保存

ajax - AJAX 请求的 HTTP 摘要认证