Почему тип содержимого «appication / json» не работает, когда метод «GET» в axios?

#javascript #axios #xmlhttprequest #http-headers

#javascript #axios #xmlhttprequest #http-заголовки

Вопрос:

Метод «GET». Тип содержимого «application / json».

это не работает. (Ответ — 415 (HTTP-код).)

 var config =    {
     headers : { 
        "Accept": "application/json",
        "Content-Type": "application/json",
     }
   };

axios.get('http://192.168.2.2:90/api/pagetwo?size=10amp;page=1', config)
.then((res) => {
  console.log(res);
});
  

но это работает.
следующее :

 var xhr = new XMLHttpRequest();                               // only XMLHttpRequest.
var url = "http://192.168.2.2:90/api/pagetwo?size=10amp;page=1";
xhr.open("GET", url, false);                                  // false is "async"
xhr.setRequestHeader("Accept", "application/json");
xhr.setRequestHeader("Content-Type", "application/json");
xhr.onreadystatechange = function () {
  if (this.readyState === XMLHttpRequest.DONE) {
    if (this.status === 200) {
      console.log(JSON.parse(this.responseText));
    } else {
      console.log(this.status, this.statusText);
    }
  }
};
xhr.send();
  

Кто-нибудь здесь может ответить на этот вопрос, кто объяснит эту проблему для экономии нашего времени?
Спасибо!!

Ответ №1:

Я считаю, что заголовки axios GET требуют, чтобы был указан data ключ, иначе он будет игнорировать тип содержимого (даже если это запрос GET)

Итак, вы можете сделать что-то вроде этого

 var config =    {
     data: {},
     headers : { 
        "Accept": "application/json",
        "Content-Type": "application/json",
     }
   };
  

или

 var config =    {
     data: null,
     headers : { 
        "Accept": "application/json",
        "Content-Type": "application/json",
     }
   };
  

Комментарии:

1. Это работает! Спасибо, что предоставили свою идею! (Возможно, процессор «Data» не существовал на сервере ответа.)