【问题标题】:XMLHttpRequest cannot load. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin is therefore not allowed accessXMLHttpRequest 无法加载。请求的资源上不存在“Access-Control-Allow-Origin”标头。因此不允许 Origin 访问
【发布时间】:2023-03-26 09:54:01
【问题描述】:

我正在使用 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);

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

提前感谢:)

【问题讨论】:

标签: javascript jquery json node.js post


【解决方案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。无论哪种方式,您都应该避免在 Stackoverflow 上仅提供链接答案。
【解决方案2】:

错误信息说:

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

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

【讨论】:

  • 那么解决办法是什么?
  • 发送适当的Access-Control-Allow-Origin 标头。
猜你喜欢
  • 2016-11-21
  • 2013-12-24
  • 2017-02-04
  • 2014-12-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-04-09
相关资源
最近更新 更多