В сценарии содержимого моих веб-приложений Firefox добавлен XMLHttpRequest. Вопрос: почему статус этого запроса всегда равен 0?Состояние XMLHttpRequest 0 для Firefox 49.0.2 Добавить в
Это код JavaScript, сделавшего запрос:
var query = "http://api.wolframalpha.com/v2/query?appid=[MY-APP-ID]&includepodid=Comparison&scanner=Unit&format=plaintext&input=1%20lm";
var xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function()
{
console.log("onreadystatechange");
console.log(this);
if (this.readyState == 4 && this.status == 200)
{
onSuccess(this.responseText);
}
};
xhttp.open("GET", query, true);
xhttp.send();
Если я распечатать результаты запроса для каждого onreadystatechange вызова, я получаю:
XMLHttpRequest { onreadystatechange: makeWolframRequest/xhttp.onreadystatechange(),
readyState: 1, timeout: 0, withCredentials: false, upload: XMLHttpRequestUpload,
responseURL: "", status: 0, statusText: "", responseType: "", response: "" }
XMLHttpRequest { onreadystatechange: makeWolframRequest/xhttp.onreadystatechange(),
readyState: 2, timeout: 0, withCredentials: false, upload: XMLHttpRequestUpload,
responseURL: "", status: 0, statusText: "", responseType: "", response: "" }
XMLHttpRequest { onreadystatechange: makeWolframRequest/xhttp.onreadystatechange(),
readyState: 4, timeout: 0, withCredentials: false, upload: XMLHttpRequestUpload,
responseURL: "", status: 0, statusText: "", responseType: "", response: "" }
Вещи, которые я проверил:
- Скрипты содержания должны иметь возможность делать междоменные запросы согласно WebExtensions documentation ,
- Выполнение запроса на «https://api.wolframalpha.com/» вместо «http://api.wolframalpha.com/».
Событие 'readystatechange' срабатывает всякий раз, когда изменяется readistate, первые три происходят до того, как сервер отвечает, и вы не можете иметь код состояния, прежде чем вы получите ответ, поэтому он' 0' первые три раза, и поэтому мы проверяем, что 'readystate' равен' 4', поскольку это означает, что получен ответ. Вероятно, проблема заключается не в коде состояния для трех первых вызовов «readystatechange», а в другом. – adeneo
Из моих экспериментов значение readstate logs равно 1, 2, а затем 4. Я бы согласился, что состояние 0 имеет смысл для состояний 1 и 2 (в первых двух журналах), но readistate of 4 в сочетании со статусом 0 почему я обеспокоен. – Gladclef
Если статус по-прежнему равен «0», когда readistate равен «4», это обычно указывает на некоторые другие проблемы. У меня нет идентификатора приложения, и я не могу проверить это, но я бы предположил, что это ошибка CORS. Вы установили правильные разрешения для своего скрипта, вы не можете выполнять перекрестные вызовы, не разрешая его, запрашивая правильные разрешения? – adeneo