ReactJS, кажется, превращает запросы POST в запросы GET - PullRequest
0 голосов
/ 12 июня 2018

Я использую React и API выборки для выполнения запроса POST к бэкэнду аутентификации пользователя.Я могу выполнить этот POST-запрос ниже с Postman, и я получаю верный JWT, но, как ни странно - всякий раз, когда я использую следующий код в React, POST-запрос каким-то образом попадает на сервер как GET-запрос.

Код вРеакция:

    return this.fetch('http://fakeURL.com/auth', {
        method: 'POST',
        headers: {
          Accept: 'application/json',
          'Content-Type': 'application/json',
        },
        body: JSON.stringify({
          "email": "email@email.com",
          "password": "password",
        })
    }).then(res => {
        this.setToken(res.token);
        return Promise.resolve(res);
    })

Журналы показывают (сначала запрос перед полетом):

Request URL: http://fakeURL.com/auth
Request Method: OPTIONS
Status Code: 200 OK
Referrer Policy: no-referrer-when-downgrade

И фактический запрос:

Request URL: http://fakeURL.com/auth
Request Method: GET
Status Code: 405 METHOD NOT ALLOWED
Referrer Policy: no-referrer-when-downgrade

Вещи, которые я имеюпробовал:

  • Запуск приложения как локально, так и в корзине AWS S3 (с CORS, настроенным для разрешения всех методов и из любого источника)
  • Использование Flask в нашем бэкэнде для включения CORS
  • Переход к нашему бэкэнду через Postman с тем же запросом API POST (когда мы используем Postman, запрос API работает как задумано, как POST, который возвращает токен)
  • Переход по другим URL-адресам (например, http://httpbin.org/post) чтобы увидеть, может ли мой код поразить эти конечные точки с помощью POST, а не GET ... и эти конечные точки также видят запросы GET (вместо предполагаемого POST)

Этотак запутанно - что может быть причиной нашего POST гВы хотите выйти как запрос GET?Я чувствую, что мы устранили все возможные причины за пределами чего-то странного, что происходит в React.Спасибо за помощь!

1 Ответ

0 голосов
/ 13 июня 2018

npm install --save axios

на вашей странице авторизации: импорт axios из 'axios'

Измените ваше сообщение, вместо использования fetch:

login(emailValue, passwordValue) {
    return axios({
        url: `yourAuthURL`,
        method: 'POST',
        headers: {
          Accept: 'application/json',
          'Content-Type': 'application/json',
        },
        data: {
          "email": emailValue,
          "password": passwordValue,
        }
    }).then(res => {
        console.log(res);
    })
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...