2017-03-11 10 views
1

Ajaxを使用してAPIから情報を要求しようとしています。以下のコードを実行しようとすると、私はこのエラーが表示されます。CORSプリフライト応答エラー

XMLHttpRequest cannot load. Request header field cache-control is not allowed by Access-Control-Allow-Headers in preflight response.

ここでは、コードです:

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); 

は私が始めコーダだと私は私がヘッダに何かを追加する必要があります信じています。助言がありますか?

ご協力いただきありがとうございます。

+2

これは、アクセスしようとしているサイトが許可するように設定されていないことを意味します。 – Pointy

+0

CORSの有効性をチェックするための最後の要求を送信する前に、プリフライト要求が行われます。 この回答を確認してください:http://stackoverflow.com/questions/8685678/cors-how-do-preflight-an-httprequest – jsertx

答えて

2

あなたはあなたの要求に、この3つのHTTPヘッダを送信している:

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

ブラウザでは、このエラーがスローされます。

XMLHttpRequest cannot load https://webhose.io/search?token=fc70c82d-7bd6-4bed-aafe-4d4e65c7e5db&format=json&q=&site=theonion.com&size=12&_=1489245026633 . Request header field postman-token is not allowed by Access-Control-Allow-Headers in preflight response.

そして、HTTP応答で、リモートサーバはあなたにこのヘッダを送信しています:

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

つまり、キャッシュ制御、また郵便配達トークン、またアクセス制御 - 許可 - ヘッダ HTTPヘッダがHTTPリクエストで許可されている、唯一の起源コンテンツタイプX-JSONを受け入れますxプロトタイプ版,x-requested-,の許可が必要です。

関連する問題