Я работаю на очень простой angular2 веб-приложение и некоторые проблемы с HTTP заголовками ...Angular2: угловой HTTP Headers очень странное поведение
У меня есть следующие функции:
postStockTake(stockTakeModel: StockTakeModel) : Observable<Response> {
let body = JSON.stringify(stockTakeModel);
let hd = new Headers();
hd.append('Content-Type', 'application/json');
return this.http.post(ApiUrl, body, {headers: hd})
.map((res: Response) => res.json())
.catch((error: any) => Observable.throw(error.json().error || 'server error'));
}
Когда Я опускаю инструкцию hd.append ('Content-Type', 'application/json') из заголовков, на которых я действительно получаю ответ от сервера, но затем жалуется на то, что полезная нагрузка находится в необработанном формате, когда она должна быть json. Когда я добавляю заголовок Content-Type, 'application/json', он вообще не работает, и я получаю сообщение об ошибке «Не удалось загрузить ресурс: CONNECTION_RESET» в моей консоли crhome ... При использовании Rest Rest I я могу сделать запрос на отправку с указанным выше заголовком без каких-либо проблем, поэтому я теряюсь относительно того, почему это происходит ... Я должен добавить этот заголовок для другого запроса на перенос в моем приложении и получить те же результаты.
Когда я смотрю под хромом Девых инструментов вкладки под заголовками сетевых когда Опуская заголовок я вижу следующие заголовки под заголовками запроса:
заголовков запроса: Accept: приложения/JSON, текст/равнина, / Accept-Encoding: GZIP, выкачать, SDCH Accept-Language: EN-US, еп, д = 0,8 Подключение: держать-жив Ведущий: 10.60.160.34 типа содержимого: текст/обычный Происхождение: http://localhost:4200 Referer : http://localhost:4200/settings Пользователь -Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537,36 (KHTML, как Gecko) Chrome/55.0.2883.87 Safari/537,36
Когда я добавить заголовок я получаю следующее под Request Headers в хромовых Дев инструментов:
Временные заголовки показаны доступа -Управление-Request-заголовки: тип содержимого Access-Control-Request-метод: GET Происхождение: http://localhost:4200 Referer: http://localhost:4200/settings User-Agent: Mozilla/5.0 (Windows NT 10,0; Win64; x64) AppleWebKit/537,36 (KHTML , как Gecko) Хром/55.0.2883.87 Safari/537.36
Так что я d даже не вижу мое приложение/json в заголовках при его добавлении? Любая идея, почему это произойдет/что я могу сделать, чтобы исправить это?
обновление: из хрома: // нетто-Внутренности я вижу следующее:
http://10.60.160.34/BRMServices/WebEnquiry/StockTake/AddToStockTake
Start Time: 2017-01-13 14:44:30.800
t=19711 [st=0] +REQUEST_ALIVE [dt=3]
t=19711 [st=0] URL_REQUEST_DELEGATE [dt=0]
t=19711 [st=0] +URL_REQUEST_START_JOB [dt=3]
--> load_flags = 34624 (DO_NOT_SAVE_COOKIES | DO_NOT_SEND_AUTH_DATA | DO_NOT_SEND_COOKIES | MAYBE_USER_GESTURE | VERIFY_EV_CERT)
--> method = "OPTIONS"
--> priority = "MEDIUM"
--> url = "http://10.60.160.34/BRMServices/WebEnquiry/StockTake/AddToStockTake"
t=19711 [st=0] URL_REQUEST_DELEGATE [dt=0]
t=19711 [st=0] HTTP_CACHE_GET_BACKEND [dt=0]
t=19711 [st=0] +HTTP_STREAM_REQUEST [dt=1]
t=19711 [st=0] HTTP_STREAM_REQUEST_STARTED_JOB
--> source_dependency = 6474 (HTTP_STREAM_JOB)
t=19712 [st=1] HTTP_STREAM_REQUEST_BOUND_TO_JOB
--> source_dependency = 6474 (HTTP_STREAM_JOB)
t=19712 [st=1] -HTTP_STREAM_REQUEST
t=19712 [st=1] +HTTP_TRANSACTION_SEND_REQUEST [dt=0]
t=19712 [st=1] HTTP_TRANSACTION_SEND_REQUEST_HEADERS
--> OPTIONS /BRMServices/WebEnquiry/StockTake/AddToStockTake HTTP/1.1
Host: 10.60.160.34
Connection: keep-alive
Access-Control-Request-Method: POST
Origin: http://localhost:4200
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36
Access-Control-Request-Headers: content-type
Accept: */*
Referer: http://localhost:4200/stockTake
Accept-Encoding: gzip, deflate, sdch
Accept-Language: en-US,en;q=0.8
t=19712 [st=1] -HTTP_TRANSACTION_SEND_REQUEST
t=19712 [st=1] +HTTP_TRANSACTION_READ_HEADERS [dt=2]
t=19712 [st=1] HTTP_STREAM_PARSER_READ_HEADERS [dt=2]
--> net_error = -101 (ERR_CONNECTION_RESET)
t=19714 [st=3] -HTTP_TRANSACTION_READ_HEADERS
--> net_error = -101 (ERR_CONNECTION_RESET)
t=19714 [st=3] -URL_REQUEST_START_JOB
--> net_error = -101 (ERR_CONNECTION_RESET)
t=19714 [st=3] URL_REQUEST_DELEGATE [dt=0]
t=19714 [st=3] -REQUEST_ALIVE
--> net_error = -101 (ERR_CONNECTION_RESET)
GET-запрос normaly не использует заголовки Content-Type, но заголовок Accept. Вы уверены, что вам нужно использовать заголовок Content-Type здесь? – DGD
Ваш код отлично выглядит на поверхности. Однако, похоже, вы можете столкнуться с проблемами CORS. Является ли вторая просьба в вашем вопросе на самом деле GET или это может быть запрос OPTIONS? – MikeOne
@MikeOne Второй запрос, который не добавлен в этот вопрос, где я начал сталкиваться с этой проблемой, был Post. Этот запрос ping - это получить хотя бы ... Я попробовал здесь, чтобы реплицировать проблему, с которой я столкнулся с запросом Post в этом запросе get, чтобы узнать, ведет ли он себя так же (что он делает ... – user2094257