Запросы предполетной проверки (ВАРИАНТЫ) не выполняются для локального парового проекта - PullRequest
1 голос
/ 22 января 2020

Я создал базовый c бэкэнд, написанный на Swift с использованием фреймворка Vapor. Я запускаю его локально на своей машине, поэтому его можно получить по адресу http://localhost:8080.
. Для проекта, над которым я работаю, я также создаю интерфейс, который построен с использованием ReactJS и может быть доступен на http://localhost:3000.

При вызове моего бэкэнда в Почтальон со следующей информацией запрос работает нормально, и пользователь создается в базе данных:

Метод
POST / пользователь

Заголовки
Тип содержимого: application / json Принимать: application / json

Body

{
    email: "email@example.com
    password: "12345"
}

Теперь, когда я вызываю тот же метод с тем же телом и заголовками из локального интерфейса, мой запрос сразу же завершается неудачей, без какого-либо ответа:

failed response

Когда я проверяю ответ, я вижу, что все тело и заголовки были отправлены правильно, но ответа не было.
Я немного погуглил и понял, что Почтальон (и аналогичный) ведет себя не так, как браузеры, и что Я должен проверить, работает ли метод с OPTIONS вместо POST , Я снова вызвал метод: OPTIONS /user, и в Почтальоне он тоже не удался:

failed options call

Единственное отличие состоит в том, что в Почтальоне я получаю ответ , будучи "Результат не найден" , как вы можете видеть на скриншоте.

Я подумал, что это может иметь какое-то отношение к localhost в URL-адресе вызова API, так как интерфейс также работает на localhost. Поэтому я использовал ngrok для пересылки моего порта 8080 (backend), а затем вызвал *.ngrok.io url вместо localhost:8080. Не повезло.
Я также попытался использовать сетевой IP-адрес моей машины вместо localhost. Все еще не повезло.

Что я могу с этим поделать?

1 Ответ

2 голосов
/ 22 января 2020

Если вы сконфигурируете настройки CORS вашего бэкенда следующим образом, он должен работать:

Vapor 4

let corsConfiguration = CORSMiddleware.Configuration(
    allowedOrigin: .all,
    allowedMethods: [.GET, .POST, .PUT, .OPTIONS, .DELETE, .PATCH],
    allowedHeaders: [.accept, .authorization, .contentType, .origin, .xRequestedWith, .userAgent, .accessControlAllowOrigin]
)
app.middleware.use(CORSMiddleware(configuration: corsConfiguration))


Vapor 3

let corsConfiguration = CORSMiddleware.Configuration(
    allowedOrigin: .all,
    allowedMethods: [.GET, .POST, .PUT, .OPTIONS, .DELETE, .PATCH],
    allowedHeaders: [.accept, .authorization, .contentType, .origin, .xRequestedWith, .userAgent, .accessControlAllowOrigin]
)
middlewares.use(CORSMiddleware(configuration: corsConfiguration))
services.register(middlewares)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...