2017-01-24 2 views
2

Я пытаюсь добавить пользовательский заголовок к моим угловыми JS GET запрос, как показано ниже:Пользовательские заголовки добавляются в Access-Control-Request-Headers

$http({ 
     method : 'GET', 
     url : s, 
     headers : { 
     "partnerId" : 221, 
     "partnerKey" : "heeHBcntCKZwVsQo" 
     } 
    }) 

Но вопрос заголовки становятся добавлены в Access -Управление-Request-заголовки, как показано ниже, и я получаю 403 Forbidden ответ:

User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.12; rv:50.0) 
Gecko/20100101 Firefox/50.0 
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/ *;q=0.8 
Accept-Language: en-US,en;q=0.5 
Accept-Encoding: gzip, deflate 
Access-Control-Request-Method: GET 
Access-Control-Request-Headers: partnerid,partnerkey 
Origin: http://localhost:8080 
DNT: 1 
Connection: keep-alive 

Я также попытался ниже изменений, но не повезло

return $http.get(s, { 
    headers : { 
     'partnerId' : 221, 
     'partnerKey': 'heeHBcntCKZwVsQo' 
     } 
    }) 

В других связанных ответах в SO я увидел, что заголовок partnerId и partnerKey должны быть включены на стороне сервера. Но я могу добавить эти пользовательские заголовки в клиенте POSTMAN и других клиентах POST и получить ожидаемый ответ. Так что, наверное, я чего-то не хватает. Может ли кто-нибудь навестить меня в этом. Заранее спасибо

Редактировать: Еще одна вещь, которую я заметил, это то, что partnerId заменяется как partnerid при прохождении запроса. Не уверен, что это имеет значение.

ответ

3

Если вы добавляете заголовки к запросам на перекрестный поиск по сценарию, отличным от любого CORS-safelisted request-headers, он запускает браузеры сначала do a CORS preflight request.

Невозможно предотвратить использование браузерами пользователей этого предпросмотра CORS (хотя есть способы обойти его локально в вашем собственном браузере при тестировании, например, с помощью Postman).

Для того чтобы пользователи могли использовать ваше веб-приложение, которое создает скриптовые запросы с кросс-началом с настраиваемыми заголовками, сервер, на который передаются эти запросы с перекрестным происхождением, должен быть осведомлен о CORS.

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

Почтальон может в принципе делать все, что угодно curl или другие подобные инструменты могут делать, но только в пределах пользовательского интерфейса браузера для удобства общения. Это в противном случае обходит обычные функции веб-безопасности, встроенные в браузеры.

+0

Привет @sideshowbarker Спасибо за быстрый ответ. Итак, вы хотите сказать, что мне нужно внести изменения на стороне сервера, чтобы принять заголовки partnerId и partnerKey? –

+0

@SathiyaNarayanan Да. См. Https://developer.mozilla.org/en-US/docs/Web/HTTP/Access_control_CORS#Access-Control-Allow-Headers (о заголовке ответа 'Access-Control-Allow-Headers') для стартеров. – sideshowbarker

 Смежные вопросы

  • Нет связанных вопросов^_^