Как предотвратить перенаправление на сервлет при выполнении запроса POST? - PullRequest
0 голосов
/ 20 июня 2019

Я пытаюсь отправить 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");
}

Итак, есть ли способ избежать этого перенаправления? Я что-то не так делаю?

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