5

JSONレスポンスをフェッチするためにGroupMe APIへのAPI呼び出しを試みていますが、次のエラーが発生しています。リクエストヘッダーフィールドX-CSRFTokenは、プリフライトレスポンスのAccess-Control-Allow-Headersで許可されていません

XMLHttpRequest cannot load ...(call url)... 
Request header field X-CSRFToken is not allowed by Access-Control-Allow-Headers in preflight response. 

私のJavascriptが次のようになります。

var xmlhttp = new XMLHttpRequest(); 
var url = (call url) 

xmlhttp.onreadystatechange = function() { 
    if (xmlhttp.readyState == 4 && xmlhttp.status == 200) { 

    xmlhttp.open("GET", url, true); 
    xmlhttp.setRequestHeader("Access-Control-Allow-Headers", "*"); 
    xmlhttp.setRequestHeader('Access-Control-Allow-Origin', '*'); 

    $.getJSON(url, function(data){ 
     var array = data.response.messages.reverse(); 
     for(i = 0; i<array.length; i++){ 
      $('.messages').append("<div class='message'>"+array[i].name+":<br>"+array[i].text+"</div>"); 
     } 
    }); 
    } 
} 

xmlhttp.open("GET", url, true); 
xmlhttp.send(); 

私は本当にリクエストヘッダは、私は私が正しくヘッダを設定していないよ推測していますどのように機能するかを理解していません。誰かがこの問題を解決するためにヘッダーをどのように設定できるかについて、正しい方向で私を指摘できますか?

+0

これらのヘッダーをクライアントから取り除く必要はありません。これらのヘッダーはサーバー応答ヘッダーです。応答の一部であれば、サーバがACAHの 'X-CSRFToken 'をホワイトリストに登録していることを確認してください。 – dandavis

+1

ああ、私たちJSersは実際にプリフライトもしません、ブラウザは私たちのためにそれを行い、私たちの "普通のお尻"のAjaxを通過させることができます... – dandavis

答えて

5

     サードパーティのサーバーへの呼び出しを行っている場合は、プリフライトリクエストのために、response headerはあなたが得るエラーを取り除くためにAccess-Control-Allow-Headers: X-CSRF-Tokenが含まれている必要があります。しかし、我々はそれを支配していない。

     コールはあなたがcrossDomain parameter set to trueajax jQuery requestを送信する場合は、ケースタイプOPTIONSであるあなたのプリフライトリクエストに応じて Access-Control-Allow-Headers: X-CSRF-Tokenを追加することができ、当社のサーバーを参照する場合には、当社の管理下に完全にあります。

+0

ありがとう! Access-Control-Allow-Headersの追加:X-CSRFトークン、Content-Typeがトリックを行いました! – Ben

+1

私はどこでこれを腋窩に置くべきですか? –

関連する問題

 関連する問題