Как установить несколько заголовков данных в XMLHttpRequest asyn - PullRequest
0 голосов
/ 02 июля 2018

Мой вызов API требует, чтобы я передал ключ API в заголовках, но я получаю сообщение об ошибке от службы API {"error":"2424452","message":"Invalid Api Key"}

Я знаю, что мой ключ API действителен, так как я могу сделать тот же вызов API в Python просто отлично, пример:

req = requests.Session()
req.headers.update({'x-api-key': 'my-api-key', 'X-Product': 'my-product-name'})
req.get(url)

Но в javscript те же ошибки вызова отсутствуют. Я полагаю, что я неправильно устанавливаю заголовки или что-то в этом роде?

var req = new XMLHttpRequest();
req.onreadystatechange=handleStateChange;
req.open("GET", "url", true);
req.setRequestHeader("Host", "api.domain.com", "x-api-key", "my-api-key", "X-Product", "my-product-name");
req.send();

* Этот XMLHttpRequest не является вызовом браузера, скорее в приложении, которое поддерживает XMLHttpRequest

Ответы [ 2 ]

0 голосов
/ 29 января 2019

Если вы не хотите явно указывать несколько заголовков

function setHeaders(headers){
  for(let key in headers){
    xhr.setRequestHeader(key, header[key]) 
  }
}
setHeaders({"Host":"api.domain.com","X-Requested-With":"XMLHttpRequest","contentType":"application/json"})
0 голосов
/ 02 июля 2018

setRequestHeader устанавливает один заголовок и принимает два аргумента (имя и значение).

Если вы хотите установить несколько заголовков, то звоните setRequestHeader несколько раз. Не добавляйте дополнительные аргументы к первому вызову.

...