2015-07-29 3 views
0

Я использую расширение Google Postman для генерации кода для запросов POST и GET с соответствующими заголовками, но после нескольких часов работы с этим я вижу, что мне понадобится помощь. Он отлично работает в Postman, но код Javascript, который он предоставляет, как-то не так.Ajax GET с заголовком авторизации

Если я делаю запрос без заголовка аутентификации, я получаю GET 401 - Unauthorized.

Если я сделаю запрос с заголовком аутентификации, я получаю ОПЦИИ 401 - Несанкционированный.

 $.ajax(
     { 
     "async": true, 
     "crossDomain": true, 
     "url": "http://mywebservice.com/example.php?key=myValue", 
     "method": "GET", 
     "headers": 
      { 
       "authorization": "Basic YWRtaW39NjU1YzVlMWM=" 
      } 
     }) 

Может ли кто-нибудь объяснить, почему я получаю параметры 401, когда я использую правильный заголовок авторизации? Я также попытался использовать btoa(username + ":" + password) - тот же результат.

ответ

1

Браузер останавливает вас от запроса кросс-домена, чтобы защитить вас от уязвимостей безопасности.
(Это не произойдет в почтальоне, потому что почтальон этого расширение для браузера, и, таким образом, имеет различные разрешения, чем стандартный веб-страница.)

Есть несколько способов обойти это:
1. Если оба домена находятся под вашим контролем, а затем сделать использование Access-Control-Allow-Origin HTTP header
2. Используйте jsonp сделать вызов

+0

Вы не можете установить пользовательские заголовки с JSONP. Использование Access-Cointrol-Allow-Origin не будет препятствовать выполнению запроса OPTIONS. – Quentin

+0

Большое спасибо gillyb! Я добавил «dataType»: «jsonp», и теперь он отлично работает! Большое спасибо за вашу помощь :) – user3296337

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