XMLHttpRequest 无法加载。请求的资源上不存在“Access-Control-Allow-Origin”标头。因此不允许 Origin 访问

Posted

技术标签:

【中文标题】XMLHttpRequest 无法加载。请求的资源上不存在“Access-Control-Allow-Origin”标头。因此不允许 Origin 访问【英文标题】:XMLHttpRequest cannot load. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin is therefore not allowed access 【发布时间】:2014-10-16 04:34:06 【问题描述】:

我正在使用 apache httpd 服务器来托管客户端文件

http://ipaddress:8010/

我的 Nodejs 服务器正在 http://ipaddress:8087 上运行

当我发送 post 请求时,它会显示以下错误

XMLHttpRequest cannot load http://ipaddress:8010/. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://ipaddress:8087' is therefore not allowed access.

我的客户端代码是:

    $.ajax(
  type: "POST",

  url: "http://ipaddress:8010",
  data: name:"xyz",
  success: function()
  alert("success");
  ,
  dataType: "json"
);

我的服务器端是:

response.setHeader('Access-Control-Allow-Methods', 'GET, POST, OPTIONS, PUT, PATCH, DELETE');


    response.setHeader('Access-Control-Allow-Headers', 'X-Requested-With,content-type');


    response.setHeader('Access-Control-Allow-Credentials', true);

允许的选项仍然无法正常工作任何人都可以提出究竟是什么问题? 我在服务器端接收请求,但无法发送任何响应。

提前感谢:)

【问题讨论】:

en.wikipedia.org/wiki/Same-origin_policy 【参考方案1】:

您需要启用 CORS。

要在 apache 中添加 CORS 标头,请在服务器配置文件的 <Directory><Location><Files><VirtualHost> 部分或 .htaccess 文件中添加以下行:

Header set Access-Control-Allow-Origin "*"

请参阅此链接以获取 apache

http://enable-cors.org/server_apache.html

对于 express,您可以添加中间件来设置响应所需的标头

app.use(function (req, res, next) 
  res.header("Access-Control-Allow-Origin", "*");
  res.header("Access-Control-Allow-Headers", "X-Requested-With");
  next();      
); 

http://enable-cors.org/server_expressjs.html

【讨论】:

代码显示 OP 已经知道他们需要启用 CORS(他们只是做错了)。该代码还显示他们没有使用 Apache,尽管他们可能正在使用 express。无论哪种方式,您都应该避免在 *** 上仅提供链接答案。【参考方案2】:

错误信息说:

没有“Access-Control-Allow-Origin”标头

您设置了三个Access-Control-Allow-SOMETHING 标头,但没有一个是Origin

【讨论】:

那么解决办法是什么? 发送适当的Access-Control-Allow-Origin 标头。

以上是关于XMLHttpRequest 无法加载。请求的资源上不存在“Access-Control-Allow-Origin”标头。因此不允许 Origin 访问的主要内容,如果未能解决你的问题,请参考以下文章

XMLHttpRequest 无法加载 http://127.0.0.1:1337/。请求的资源上不存在“Access-Control-Allow-Origin”标头[重复]

XMLHttpRequest 无法加载 <instagram OEMBED URL>。请求的资源上不存在“Access-Control-Allow-Origin”标头

XMLHttpRequest 无法加载请求的资源上不存在“Access-Control-Allow-Origin”标头。 AWS S3,视网膜.JS

apache_conf XMLHttpRequest无法加载http:// localhost:9233 /。请求的资源上不存在“Access-Control-Allow-Origin”标头。来源&#

无法通过 xmlhttprequest 加载本地 xml 文件

XMLHttpRequest 无法以角度加载