Почему тело ответа пустое (0 байт на вкладке сети) для этого запроса?Это связано с тем, что это расширение? - PullRequest
0 голосов
/ 04 мая 2019

Когда я использую API выборки (или xmlhttprequest), я получаю 0-байтовый ответ.Вот пример моего кода:

    fetch("https://myurl", {
      method: "POST",
      headers: {
        'Accept': 'application/json',
        'Content-Type': 'application/json'
      },
      body: JSON.stringify({content: content})
      }).then(function(res){  return res.text()}).then(function(res){ return cb(res);});

На вкладке сети и в файле console.log (res) в обратном вызове ответ пуст.Я должен отметить, что ответ включает в себя ответ CORS, указывающий мое расширение chrome (которое выполняет запрос)

Access-Control-Allow-Origin: chrome-extension://asdjkljuewyrjkhighqwend

Когда я использую библиотеку запросов (python) и делаю тот же запрос (копирование и вставкатело запроса) Я получаю действительный ответ json.

resp = requests.post("https://myurl", json=data)
resp.json() ->> {content}

Кроме того, когда я проверяю сервер после запросов Fetch, я вижу, что он с радостью ответил json на запрос, но что-то накажется, браузер блокирует его доступ.

Ответы [ 2 ]

1 голос
/ 05 мая 2019

Вам необходимо переместить все XHR-запросы в фоновую часть вашего расширения.Chrome больше не принимает запросы сценариев содержимого.

Вы можете использовать runtime.sendMessage для отправки сообщений в фоновый процесс.

chrome.runtime.sendMessage(myMessageObject, async response => {
  // Here is the response returned by the background process
});

А вот как получать сообщения из фоновой перспективы.

chrome.runtime.onMessage.addListener(function (request, sender, sendResponse) {

  return true
})
0 голосов
/ 05 мая 2019

Я полагаю, что вы действительно смотрите на проблему с CORS.Попробуйте включить в ответ от вашего сервера следующие заголовки:

Access-Control-Allow-Origin: * // you already hve this one Access-Control-Allow-Headers: Content-Type Access-Control-Allow-Methods: GET, PUT, POST, OPTIONS

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...