CORS预检响应错误

时间:2017-03-11 15:04:07

标签: javascript json ajax cors preflight

我正在尝试使用Ajax从API请求信息。尝试运行下面的代码时,我收到此错误:

  

XMLHttpRequest无法加载。请求标头字段缓存控制不是   在预检响应中由Access-Control-Allow-Headers允许。

以下是代码:

var Onion = {
  "async": true,
  "crossDomain": true,
  "url": "https://webhose.io/search?token=fc70c82d-7bd6-4bed-aafe-4d4e65c7e5db&format=json&q=&site=theonion.com&size=12",
  "dataType": "json",
  "method": "GET",
  "headers": {
    "cache-control": "no-cache",
    "postman-token": "9a49be98-19cb-ebc6-9f52-4be90c88222b",
    "Access-Control-Allow-Headers": true,
  }
}

$.ajax(Onion).done(function (response) {
  console.log(response);
  console.log(response.posts[0].title);

我是一名初学者,我相信我需要在标题中添加一些东西。有什么建议吗?

提前感谢您的帮助!

1 个答案:

答案 0 :(得分:2)

您在请求中发送了3个HTTP标头:

"cache-control": "no-cache"
"postman-token": "9a49be98-19cb-ebc6-9f52-4be90c88222b"
"Access-Control-Allow-Headers": true

浏览器抛出此错误:

  

XMLHttpRequest无法加载   https://webhose.io/search?token=fc70c82d-7bd6-4bed-aafe-4d4e65c7e5db&format=json&q=&site=theonion.com&size=12&_=1489245026633。   请求标头字段postman-token不被允许   预检响应中的Access-Control-Allow-Headers。

在HTTP响应中,远程服务器正在向您发送此标头:

Access-Control-Allow-Headers:accept, origin, Content-type, x-json, x-prototype-version, x-requested-with, authorization

这意味着缓存控制 postman-token Access-Control-Allow-Headers HTTP标头都不允许HTTP请求,只有接受来源内容类型 x-json x-允许原型版 x-requested-with 授权