Разрешение HttpClient POST для IP-адреса узла домена вместо IP-адреса API - PullRequest
0 голосов
/ 07 октября 2018

Текущее поведение

в настоящее время я размещаю angular на хостинге firebase с 151.101.1.195 , и мой API расположен на сервере Azure с IP 23.98.64.158

затем я отправляю запрос POST, используя следующие строки в моем угловом v6.1.7

const req = new HttpRequest('POST', `${environment.ApiHost}api/do/something`, token, { headers: this.authenticationService.getAccessTokenHeader(), responseType: "text" });
return this.httpClient.request<any>(req);

, что предполагает выполнение запроса OPTIONS к моему серверу API Azure по адресу 23.98.64.158 тогда только POST, но каким-то образом это DIT POST, OPTION и затем POST.Глядя на вкладку chrome devtool network, видно, что мой запрос перешел на firebase ip 151.101.1.195 для первого POST (что не должно), но последующие запросы OPTION и POST разрешают исправить лазурный IP 23.98.64.158

это мой заголовок devtool Общая информация, которую я показываю, что она отправлена ​​неправильно Remote Address 151.101.1.195

Request URL: https://someazuresite.azurewebsites.net/api/do/something
Request Method: POST
Status Code: 504 Gateway Timeout (from ServiceWorker)
Remote Address: 151.101.1.195:443
Referrer Policy: no-referrer-when-downgrade

FROM INITIATOR:-
m | @ | zone.js.pre-build-optimizer.js:2969
-- | -- | --
  | t.scheduleTask | @ | zone.js.pre-build-optimizer.js:407
  | onScheduleTask | @ | zone.js.pre-build-optimizer.js:297
  | t.scheduleTask | @ | zone.js.pre-build-optimizer.js:401
  | e.scheduleTask | @ | zone.js.pre-build-optimizer.js:232
  | e.scheduleMacroTask | @ | zone.js.pre-build-optimizer.js:255
  | p | @ | zone.js.pre-build-optimizer.js:1114
  | (anonymous) | @ | zone.js.pre-build-optimizer.js:3001
  | N.o.(anonymous function) | @ | zone.js.pre-build-optimizer.js:1394
  | (anonymous) | @ | http.js.pre-build-optimizer.js:1639
  | e._trySubscribe | @ | Observable.js.pre-build-optimizer.js:42
  | e.subscribe | @ | Observable.js.pre-build-optimizer.js:28
  | e.call | @ | catchError.js.pre-build-optimizer.js:18
  | e.subscribe | @ | Observable.js.pre-build-optimizer.js:23
  | (anonymous) | @ | subscribeTo.js.pre-build-optimizer.js:21
  | i | @ | subscribeToResult.js.pre-build-optimizer.js:11
  | t._innerSub | @ | mergeMap.js.pre-build-optimizer.js:73
  | t._tryNext | @ | mergeMap.js.pre-build-optimizer.js:68
  | t._next | @ | mergeMap.js.pre-build-optimizer.js:51
  | t.next | @ | Subscriber.js.pre-build-optimizer.js:55
  | (anonymous) | @ | scalar.js.pre-build-optimizer.js:5
  | e._trySubscribe | @ | Observable.js.pre-build-optimizer.js:42
  | e.subscribe | @ | Observable.js.pre-build-optimizer.js:28
  | e.call | @ | mergeMap.js.pre-build-optimizer.js:29
  | e.subscribe | @ | Observable.js.pre-build-optimizer.js:23
  | (anonymous) | @ | kg-fcm-setup.component.ts:64

затемВ последующем запросе указывалось на правильный IP Azure

Request URL: https://someazuresite.azurewebsites.net/api/do/something
Request Method: OPTIONS
Status Code: 200 OK
Remote Address: 23.98.64.158:443
Referrer Policy: no-referrer-when-downgrade

Request URL: https://someazuresite.azurewebsites.net/api/do/something
Request Method: POST
Status Code: 500 Internal Server Error
Remote Address: 23.98.64.158:443
Referrer Policy: no-referrer-when-downgrade

Ожидаемое поведение

я должен видеть только вызов OPTION и POST для https://someazuresite.azurewebsites.net/api/do/something и разрешение только для AZURE IP УдаленныйАдрес: 23.98.64.158:443 почему zone.js запускает POST с неверным IP-адресом firebase?

Минимальное воспроизведение проблемы с инструкциями

Что такое мотивация / сценарий использования дляизменение поведения?

Окружающая среда

Angular CLI: 6.1.5
Node: 8.12.0
OS: win32 x64
Angular: 6.1.7
... animations, common, compiler, compiler-cli, core, forms
... http, language-service, platform-browser
... platform-browser-dynamic, router, service-worker

Package                            Version
------------------------------------------------------------
@angular-devkit/architect          0.7.1
@angular-devkit/build-angular      0.7.1
@angular-devkit/build-ng-packagr   0.7.5
@angular-devkit/build-optimizer    0.7.1
@angular-devkit/build-webpack      0.7.1
@angular-devkit/core               0.7.5
@angular-devkit/schematics         0.7.5
@angular/cli                       6.1.5
@angular/pwa                       0.7.5
@ngtools/json-schema               1.1.0
@ngtools/webpack                   6.1.1
@schematics/angular                0.7.5
@schematics/update                 0.7.5
ng-packagr                         3.0.6
rxjs                               6.3.2
typescript                         2.9.2
webpack                            4.9.2
<pre><code>
Angular version: X.Y.Z
<!-- Check whether this is still an issue in the most recent Angular version -->

Browser:
- [x] Chrome (desktop) version XX
- [ ] Chrome (Android) version XX
- [ ] Chrome (iOS) version XX
- [ ] Firefox version XX
- [ ] Safari (desktop) version XX
- [ ] Safari (iOS) version XX
- [ ] IE version XX
- [ ] Edge version XX
```

For Tooling issues:
- Node version: v8.12.0
- Platform:  windows 10 Version 10.0.17134 Build 17134

Ответы [ 2 ]

0 голосов
/ 08 октября 2018

Ваша проблема не связана с Angular, вместо этого настройка домена.

Похоже, что DNS для вашего домена недавно изменился.Просто подождите 24-48 часов, чтобы увидеть изменения навсегда.

0 голосов
/ 07 октября 2018

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

`constructor (private http: HttpClient) {}

request (токен) {вернуть this.http.post (this.URLAPI / any, токен);} `

Может быть, это будет полезно.

...