Express API возвращает дубликаты ответов «100 продолжений», когда он должен возвращать только один - PullRequest
1 голос
/ 09 мая 2019

Описание проблемы

При отправке HTTP-запроса POST в мое приложение Express (Node.js) сервер отвечает двумя ответами «100 Continue», а после этого - «200 OK», когда должен быть только один «100 Continue».

Почтальону удается проигнорировать второе «100 продолжений» и сообщить об успехе, но другое приложение, которое я создаю с помощью Mule ESB, не принимает дополнительные «100 продолжений» и завершается ошибкой.

В противном случае приложение обрабатывает запрос POST без каких-либо проблем, данные записываются в базу данных и т. Д.

О технической среде

Приложение Express работает на SUSE-сервере. Nginx служит обратным прокси. Я управляю несколькими приложениями Express с помощью PM2.

Сначала я использовал отдельное приложение Express с пакетом прокси, чтобы действовать как обратный прокси. Но я переключился на использование Nginx в качестве обратного прокси, думая, что это могло быть проблемой. Но это не имело значения.

Я попробовал точно такую ​​же настройку с экспресс-обратным прокси-сервером на моем локальном компьютере, и он вообще не возвращает «100 Continue», только «200 OK».

Я не могу понять, почему одно и то же приложение возвращает разные ответы при работе на локальном / сервере.

Пример ответа

**REQUEST**
POST /<my-endpoint> HTTP/1.1
Host: api.<my-server>.se:443
User-Agent: AHC/1.0
Connection: keep-alive
Accept: */*
Content-Type: application/json; charset=UTF-8
Content-Length: 123

**RESPONSE**
HTTP/1.1 100 Continue
Strict-Transport-Security: max-age=94608000
Date: Thu, 09 May 2019 10:11:34 GMT
Set-Cookie: WASID_HAG=f88cc3f3525ed06b; path=/; domain=.<my-domain>.se
Set-Cookie: WAAK_HAG=41ef118d9c4608f158cfbdcb0140e652; path=/; domain=.<my-domain>.se; secure
Set-Cookie: UPD=6; path=/; domain=.<my-domain>.se
Set-Cookie: RGSC16972=1030; path=/; domain=.<my-domain>.se

HTTP/1.1 100 Continue
Strict-Transport-Security: max-age=94608000
Date: Thu, 09 May 2019 10:11:34 GMT
Set-Cookie: WASID_HAG=f88cc3f3525ed06b; path=/; domain=.<my-domain>.se
Set-Cookie: WAAK_HAG=41ef118d9c4608f158cfbdcb0140e652; path=/; domain=.<my-domain>.se; secure
Set-Cookie: UPD=6; path=/; domain=.<my-domain>.se
Set-Cookie: RGSC16972=1030; path=/; domain=.<my-domain>.se

HTTP/1.1 200 OK
Server: nginx/1.16.0
Date: Thu, 09 May 2019 10:11:34 GMT
Content-Type: application/json; charset=utf-8
Content-Length: 227
Access-Control-Allow-Origin: *
X-DNS-Prefetch-Control: off
X-Frame-Options: SAMEORIGIN
Strict-Transport-Security: max-age=15552000; includeSubDomains
X-Download-Options: noopen
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
ETag: W/"e3-aMSDU6iiOn52HqHZuJKLaZNt38k"
Set-Cookie: WASID_HAG=f88cc3f3525ed06b; path=/; domain=.<my-domain>.se
Set-Cookie: WAAK_HAG=41ef118d9c4608f158cfbdcb0140e652; path=/; domain=.<my-domain>.se; secure
Set-Cookie: UPD=6; path=/; domain=.<my-domain>.se
Set-Cookie: RGSC16972=1030; path=/; domain=.<my-domain>.se
Cache-control: no-store

Что может быть причиной нескольких ответов "100 Продолжить" и как их предотвратить?

Поскольку приложение не возвращает никаких ответов «100 Продолжить» на моем локальном компьютере, может ли это быть что-то с сервером / брандмауэром, которое вызывает это?

...