Угловая / ионная ошибка CORS с заголовком авторизации - PullRequest
0 голосов
/ 15 октября 2018

Я создаю приложение Ionic (angular 4) и хочу использовать API, созданный на C #, на IIS 10.

Когда сначала выполнялся запрос POST, подобный этому:

this.http.post(my_url, my_credentials, { headers = new HttpHeaders({
    'Content-Type': 'application/x-www-form-urlencoded',
  })
});

я получил cors ошибка 404 сообщение:

Failed to load https://some_url/api/login: Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost:8100' is therefore not allowed access.

После некоторого исследования я добавил web.config

access-control-allow-origin: *  

, и это решилоПроблемы с CORS.

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

this.http.post(my_url, my_body, { headers = new HttpHeaders({
    'Content-Type': 'application/x-www-form-urlencoded',
    'Authorization': 'Bearer ' + token
  })
});

итогда я получил ту же ошибку, что и предыдущая.

Итак, суммируем эти запросы в одном приложении.Первый запрос работает отлично, но второй нет.

Какая дополнительная конфигурация должна быть на сервере, чтобы принять дополнительный заголовок авторизации?

Ответы [ 3 ]

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

Возможно, вы захотите добавить proxy.conf.json, чтобы перенаправить URL вашего приложения на URL вашего сервера.Может помочь следующая статья: https://juristr.com/blog/2016/11/configure-proxy-api-angular-cli/

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

Я использую, и работает для основного ядра asp.net

const headers = new HttpHeaders()
   .set('Content-Type', 'application/json')
   .set('Accept', 'application/json')
   .set('Authorization', 'Bearer ' + token); 

this.http.post(my_url, my_credentials, headers)

Не помню, действительно ли это для http, я думаю, что это действительно только для httpClient

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

попробуйте добавить в web.config:

Access-Control-Allow-Methods: POST, GET (..and more Methods that you need.)
Access-Control-Allow-Headers: Origin, X-Requested-With, Content-Type, Accept

Я не уверен, что это сработает, но вы можете попробовать: P

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