5

Я пытаюсь вызвать API-интерфейс API GroupMe для получения ответа JSON, но получил следующую ошибку:Поле заголовка запроса 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. 

My 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

Вам не нужно связываться с этими заголовками с клиентом, это заголовки ответов сервера. убедитесь, что ваш сервер переименовывает «X-CSRFToken» в ACAH, если он является частью ответа. – dandavis

+1

oh, и мы, JSers, на самом деле не делаем предполетный вклад, браузер делает это для нас и позволяет нашей работе «регулярной заднице» ajax работать, если она проходит ... – dandavis

ответ

5

      Если вы делаете вызов к серверу третьей стороны, для предполетного запроса, response header должен содержать Access-Control-Allow-Headers: X-CSRF-Token, чтобы избавиться от ошибки вы получите. Но у нас нет контроля над этим.

      Это полностью под нашим контролем, если вызов на наш сервер, где вы можете добавить Access-Control-Allow-Headers: X-CSRF-Token в ответ на ваш предполетного запроса, который имеет тип OPTIONS в случае, если вы отправляете ajax jQuery request с crossDomain parameter set to true ,

+0

Спасибо! Добавление заголовков Access-Control-Allow-заголовков: X-CSRF-токен, Content-Type сделал трюк! – Ben

+1

Где я должен помещать это в аксиомы? –