Я пытаюсь отправить JSON через POST-запрос на сайт своего движка приложений с сайта localhost, но у меня по-прежнему возникает ошибка перенаправления CORS:
Доступ к XMLHttpRequest по адресу https://0 -0-1-loader-dot-myproject.appspot.com / ml / startChangeUnmappedStatus 'из источника' http://localhost:8484' заблокирован CORS политика: Ответ на запрос предварительной проверки не проходит проверку контроля доступа: Перенаправление не разрешено для запроса предварительной проверки.
Я попытался изменить заголовки, сделав свой запрос простым запросом, но у меня все еще остается та же ошибка даже после того, как я очистил кеш браузера.
Через некоторое время я понял, что по соображениям безопасности мой запрос направляется не напрямую на мой сервлет, а на https://accounts.google.com/ServiceLogin?service=ah&passive=true&continue=https://appengine.google.com/_ah/conflogin%3Fcontinue%3Dhttps://0-0-1-loader-dot-myproject.appspot.com/ml/startChangeUnmappedStatus, который после проверки личности перенаправляет на мой сервлет.
Это означает, что даже если я отредактирую doOptions () моего сервлета в соответствии с требованиями, это не окажет никакого влияния, поскольку запрос OPTIONS отправляется на https://accounts.google.com/
Это мой запрос:
var data = json.encode(makeJSON(listPrediction)); //json containing my data
HttpRequest.request(
'https://0-0-1-loader-dot-myproject.appspot.com/ml/startChangeUnmappedStatus',
method: 'POST',
sendData: data,
requestHeaders: {
'Content-Type':'application/x-www-form-urlencoded'
}
)
.then((resp) {
print(resp.responseUrl);
print(resp.responseText);
});
И моя функция doOptions:
@Override
protected void doOptions(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
resp.setStatus(HttpServletResponse.SC_OK);
resp.addHeader("Access-Control-Allow-Origin", "*");
resp.addHeader("Access-Control-Allow-Methods", "POST,GET,DELETE,PUT,OPTIONS");
logger.info("hey i'm in the options");
}
Итак, есть ли способ избежать этого перенаправления? Я что-то не так делаю?