enyo给了我一个"Access-Control-Allow-Origin不允许",并且不会从nodejs服务器加载内容

Ted*_*tel 2 xmlhttprequest node.js enyo

我制作了简单的hello world NODEJS Server.我有一个运行在chrome中的enyo web服务,它试图访问http:// localhost:3000上的NODEJS服务器

当调用onSuccess方法时,不会加载任何数据,并且消耗显示以下错误

XMLHttpRequest cannot load http://localhost:3000/. Origin http://localhost:81 is not allowed by Access-Control-Allow-Origin.
Run Code Online (Sandbox Code Playgroud)

我在浏览器中测试了nodejs服务器,它运行正常.

我试图--disable-web-security在chrome中设置,标志,它没有用.

有人知道如何解决这个问题吗?如果NOD.js在另一台服务器上运行,它会起作用吗?这种安全性令人困惑.摊晒

ell*_*ben 6

出于安全原因,浏览器限制脚本可以通过XMLHttpRequest发出的请求.

您的请求只会在以下两种情况下成功:

  1. 脚本加载的URI的来源与脚本执行的页面的原点相同(localhost:81和localhost:3000是相同的主机但起源不同);
  2. 或者,如果您的浏览器支持它,则所请求页面的服务器包括一个Access-Control-Allow-Origin标头,该标头明确授权从相关来源(或从所有来源提供的页面)提供的页面向其发出XMLHttpRequests.

尝试将Accesss-Control-Allow-Origin标头添加到节点代码中生成响应的任何内容中,在某些代码中添加如下所示的标头:

response.writeHead(200, {
                         'Content-Type': 'text/plain',
                         'Access-Control-Allow-Origin' : 'http://localhost:81'

                         //allow anything by replacing the above with
                         //'Access-Control-Allow-Origin' : '*'

});
Run Code Online (Sandbox Code Playgroud)