У меня есть служба App Engine с несколькими реализованными методами, где я ограничиваю все маршруты с помощью опции login: admin в app.yaml.
Создание запроса POST для моегослужба работает:
fetch('http://localhost:8081/api/foo', {
credentials: 'include'});
Но выполнить запрос PUT не удается
await fetch('http://localhost:8081/api/foo', {
credentials: 'include',
method: 'PUT',
body: 'hi there'});
со следующей ошибкой:
Response to preflight request doesn't pass access control check:
Redirect is not allowed for a preflight request.
Я понимаю, что это потому, что мой запрос каким-то образомне аутентифицирован, и сервер перенаправляет мой запрос на страницу входа.Чего я не понимаю, так это как его аутентифицировать.
Я использую webapp2 для обработки запросов и устанавливаю следующие заголовки:
self.response.headers['Access-Control-Allow-Credentials'] = 'true'
self.response.headers['Content-Type'] = 'application/json'
# This feels wrong, but I still don't clearly understand what this header's purpose is...
self.response.headers['Access-Control-Allow-Origin'] = self.request.headers['Origin']
Я думаю, что более глубокая проблема заключается в том, чтоЯ не понимаю, как работает эта функция входа в систему (основана ли она на файлах cookie? Почему она работает с GET, но не с PUT? ...), и я не совсем понимаю CORS.
Спасибо за любыепомощь!