我正在尝试使用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);
我是一名初学者,我相信我需要在标题中添加一些东西。有什么建议吗?
提前感谢您的帮助!
答案 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 ,授权。