Я пишу приложение с реакцией на редукцию, в котором я делаю некоторые сервисные вызовы в своем промежуточном программном обеспечении, используя суперагент. Я обнаружил очень странное поведение, когда первый вызов моего поискового API всегда завершается. Я пробовал ждать 10-30 секунд, прежде чем сделать первый звонок, и регистрировать каждый шаг в процессе, и я не могу точно определить, почему это происходит.
Мой создатель действий выглядит так
export function getSearchResults(searchQuery) {
return {
query: searchQuery,
type: actions.GO_TO_SEARCH_RESULTS
}
}
Здесь он попадает в логику промежуточного программного обеспечения:
var defaultURL = '/myServer/mySearch';
callPendingAction();
superagent.get(defaultURL)
.query({query: action.query})
.end(requestDone);
//sets state pending so we can use loading spinner
function callPendingAction() {
action.middlewares.searchIRC.readyState = READY_STATES.PENDING;
next(action);
}
//return error or response accordingly
function requestDone(err, response) {
console.log("call error", err);
const search = action.search;
if (err) {
search.readyState = READY_STATES.FAILURE;
if (response) {
search.error = response.err;
} else if (err.message) {
search.error = err.message;
} else {
search.error = err;
}
} else {
search.readyState = READY_STATES.SUCCESS;
search.results = fromJS(response.body);
}
return next(action);
}
Запрос правильный, даже когда вызов завершен, я получаю это сообщение об ошибке:
Request has been terminated
Possible causes: the network is offline, Origin is not allowed by Access-Control-Allow-Origin, the page is being unloaded, etc.
at Request.crossDomainError (http://localhost:8000/bundle.js:28339:14)
at XMLHttpRequest.xhr.onreadystatechange (http://localhost:8000/bundle.js:28409:20)
Кажется, страница тоже обновляется каждый раз.
Кажется, я не могу найти никаких подсказок относительно того, почему это происходит, кажется, не имеет значения, что первый вызов терпит неудачу, но после этого первого завершенного вызова все в порядке. Буду признателен за любой вклад, спасибо!
ОБНОВЛЕНИЕ: кажется, это связано с хромом, я на Version 47.0.2526.80 (64-bit)
. Это приложение является iframe внутри другого приложения, и я считаю, что это вызывает проблему с Chrome, потому что, когда я пытаюсь это сделать в Firefox, проблем нет. Что странно, только первый вызов выдает ошибку CORS, потом вроде исправляется. Если у кого-то есть вход или обходной путь, я был бы очень признателен. Спасибо за чтение.