request.httpMethod == "POST", но бэкэнд получает вместо него GET ? - PullRequest
0 голосов
/ 13 января 2020

Я использую стандартный URLSession для отправки POST запроса

URLSession(configuration: .default).dataTask(with: urlRequest)

, но он возвращает ошибку бэкэнда

{
    "http_code" = 404;
    message = "Not Found";
}

Я сказал об этом бэкэнду, и он сказал, что запрос завершается неудачно, потому что сервер каким-то образом получает мой запрос как GET

136.*.*.228 - - [02/Dec/2019:09:01:48 +0000] "GET /api/v1/subscribe HTTP/2.0" 404 49 "-" "App/16 CFNetwork/1120 Darwin/18.7.0" "-"

, но print(urlRequest.httpMethod) прямо перед dataTask(with: urlRequest) показывает "POST"

Запрос от Терминала работает просто отлично

curl -X POST "https://website.com/api/v1/subscribe" -H "accept: application/json" -H "Content-Type: application/json" -d "{ \"email\": \"email@mail.com\", \"message\": \"hey\", \"name\": \"John Doe\", \"tag\": \"preorder\"}" 

РЕДАКТИРОВАТЬ: Не хочу быть грубым, но кто-нибудь пробовал читать пост, прежде чем отвечать стандартными фразами? Я знаю, что означает 404. Я знаю, что путь правильный.

1 Ответ

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

я убрал "www." из запроса и ошибка изменилась на правую - 400 (вместо 404). Оказалось, что у нас был редирект с www.sitename.com на sitename.com, и я не знал об этом.

Публикация на случай, если кто-нибудь столкнется с такой же неожиданной проблемой.

...