Угловые 6 заголовков с почтовым запросом не работают - PullRequest
0 голосов
/ 12 ноября 2018

Я использую Angular 6 для своего интерфейса и веб-API на базе Core2 для моего сервера. Я написал этот код, и он работал, когда я использовал клиентскую часть ASP.NET, но с Angular у меня есть некоторые проблемы.

enter image description here

services.AddMvc():
services.AddCors(o => o.AddPolicy("FreePolicy", builder =>
{
    builder.WithHeaders(<redacted>)
    //builder.AllowAnyHeader()
    .AllowCredentials()
    .AllowAnyMethod()
    .AllowAnyOrigin();
}));

Если я комментирую builder.WithHeaders и раскомментирую builder.AllowAnyHeader, ошибки исчезают, но в противном случае Angular падает.

Мои заголовки:

enter image description here

Это похоже на место с моей ошибкой, потому что "MaybeUnknown". Вы можете видеть скобки вокруг значения, так что это выглядит как массив. Могу ли я это исправить, и это решит мою проблему?

После отправки запроса на сервер я получаю ошибки, если я не раскомментирую builder.AllowAnyHeader.

enter image description here

UPDATE

Мои заголовки на стороне сервера

enter image description here

МОИ заголовки на клиенте enter image description here

ОБНОВЛЕНИЕ 2 Настроить метод enter image description here

ОБНОВЛЕНИЕ 3 enter image description here

1 Ответ

0 голосов
/ 13 ноября 2018

Из последнего опубликованного вами снимка экрана, который показывает HTTP-запрос, отправляемый через Chrome, ясно, что в вашем вызове WithHeaders отсутствует заголовок. Если вы посмотрите на Access-Control-Request-Headers в запросе, вы увидите, что он содержит четыре заголовка:

  • apiss
  • клиент-идентификатор
  • zump-апи-версия
  • тип содержимого

Однако ваш WithHeaders звонок не включает Content-Type, поэтому вам нужно добавить следующее:

builder.WithHeaders("client-id", "zump-api-version", "apiss", "content-type")
    ...

Примечание: все это без учета регистра, так что вы можете указать его любым удобным для вас способом.

Более подробная информация об этом содержится в документах MDN: Access-Control-Allow-Headers , которая включает следующее объяснение:

Обратите внимание, что всегда допускаются определенные заголовки: Accept, Accept-Language, Content-Language, Content-Type (но только с MIME-типом его проанализированного значения (игнорируя параметры) либо application / x-www-form-urlencoded , multipart / form-data или text / plain). Они называются простыми заголовками, и вам не нужно указывать их явно.

Это объясняет, почему вам не нужно указывать Accept (это «простой заголовок»). Вы do должны указать Content-Type в вашем примере, потому что это не один из трех типов MIME, на которые есть ссылка в приведенном выше утверждении.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...