【问题标题】:XMLHttpRequest cannot load http://example.com/test.php. No 'Access-Control-Allow-OriginXMLHttpRequest 无法加载 http://example.com/test.php。没有“访问控制允许来源”
【发布时间】:2017-08-30 05:08:37
【问题描述】:

XMLHttpRequest 无法加载 http://example.com/test.php. 请求的资源上不存在 Access-Control-Allow-Origin 标头。 Origin http://eample.com 因此不允许访问。

如何解决。我在该 php 文件中添加了以下标头:

header('Access-Control-Allow-Origin: *');

header('Access-Control-Allow-Methods: GET, POST, OPTIONS');

header('Access-Control-Allow-Headers: Origin, Content-Type, Accept, 
Authorization, X-Request-With');

header('Access-Control-Allow-Credentials: true');

我用“example”替换我的域名“codeXXX”不要混淆

【问题讨论】:

标签: javascript php angularjs


【解决方案1】:

标题

header('Access-Control-Allow-Origin: *');
header('Access-Control-Allow-Methods: GET, POST');

必须响应对“http://example.com/test.php”的 OPTION 请求。如果 OPTION 请求中包含此头,则将接受以下 GET(或 POST)。

如果浏览器提示“Access-Control-Allow-Origin”标头不存在,...只需添加它^_^

header('Access-Control-Allow-Headers: Access-Control-Allow-Origin, Origin, Content-Type, Accept, Authorization, X-Request-With');

【讨论】:

  • 我觉得如果服务器没有正确响应 OPTIONS 请求,OP 会有不同的错误消息。
  • 而 OP 实际上在允许的方法中有OPTIONS,你没有吗?
  • 您有两个请求。第一个是 OPTION,告诉您的客户如何才能成为第二个。
  • 任何时候你使用 Angular 发出请求,请求之前都会有一个 OPTION 请求。
  • @sensorario 不正确。未经授权的标准GET 请求将是简单 并且不需要飞行前请求。使用Content-type: application/x-www-form-urlencodedPOST 请求也是例外
猜你喜欢
  • 2017-02-11
  • 1970-01-01
  • 2016-12-05
  • 2015-12-25
  • 2018-07-27
  • 2018-10-18
  • 2017-07-21
  • 2016-06-27
相关资源
最近更新 更多