Access-Control-Allow-методы - PullRequest
       3

Access-Control-Allow-методы

0 голосов
/ 06 января 2020

Я делаю следующий HTTP-запрос от моего веб-интерфейса. Все мои GET запросы, выполненные таким же образом, работают, но следующее UPDATE завершается неудачно:

Доступ к выборке в '127.0.0.1/backend/path' из источника ' http://localhost: 3000 'заблокировано политикой CORS: метод UPDATE не разрешен Access-Control-Allow-Methods в ответе перед полетом.

Запрос интерфейса

return fetch(
      `127.0.0.1/backend/path`,
      {
        method: "UPDATE",
        body: JSON.stringify(newClass),
        headers: {
          "Access-Control-Allow-Origin": "*",
          "Access-Control-Allow-Methods":
            "GET, POST, PUT, DELETE, OPTIONS, UPDATE",
          "Access-Control-Allow-Headers": "Origin, Content-Type, X-Auth-Token",
          "Content-Type": "application/json",
          Authorization: "Bearer " + getState().authToken
        }
      }
    )

Backend Flask конечная точка

@app.route('/backend/path', methods=['UPDATE'])
@authenticate
def update_data():
    return {"data": "has been updated"}

Этот ответ предлагает добавить заголовок Access-Control-Allow-Methods, но он уже присутствует в моем запросе! Я также не просто хочу отключить CORS для своего браузера, поскольку мне нужно, чтобы он был реализован правильно.

1 Ответ

1 голос
/ 06 января 2020

Access-Control-Allow-Methods должен быть в заголовке OPTIONS response . Помните, что бэкэнд контролирует доступ к нему. Вы не можете добавлять разрешенные методы, просто запрашивая их.

Кроме того, UPDATE не является стандартным глаголом HTTP. Вы имеете в виду PUT или PATCH?

...