Базовая аутентификация jQuery ajax не работает - PullRequest
3 голосов
/ 15 ноября 2011

Я пытаюсь сделать JQuery AJAX-запрос к некоторому основному URL-адресу с аутентификацией http.вот мой код jQuery:

jQuery.ajax({
  url: "https://abc.com/houses/1/appliance_hints",
  method: 'GET',
  cache: false,
  crossDomain: true,
  beforeSend: function(xhr){
    xhr.setRequestHeader('Authorization', 'Basic Z3NsYWI6cGFzczFnczFhYg==');
  },
  success: function(result){
    alert(result);
  }
});

Я устанавливаю заголовок запроса «Авторизация» здесь.Но вот что я вижу в заголовке запроса в FF

Host    <host>
User-Agent  Mozilla/5.0 (Ubuntu; X11; Linux x86_64; rv:8.0) Gecko/20100101 Firefox/8.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
Accept-Charset  ISO-8859-1,utf-8;q=0.7,*;q=0.7
Connection  keep-alive
Origin  <origin>
Access-Control-Request-Me...    GET
Access-Control-Request-He...    authorization,x-requested-with

Я делаю что-то не так?Я получаю код состояния 302 в ответе.Есть ли ошибка конфигурации на стороне сервера?

Ответы [ 2 ]

3 голосов
/ 15 ноября 2011

Я заметил, что вы добавили crossDomain: true к вам $.ajax вызов, поэтому я думаю, что вы пытаетесь получить что-то из удаленного домена?

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

Если у вас есть контроль над remote_url (в вашем примере с abc.com), вы можете настроить его на отправку некоторого заголовка для разрешения этих вызовов.

пример:

Access-Control-Allow-Origin: http://permitted_domain.com

php примеры:

header('Access-Control-Allow-Origin: http://permitted_domain.com');
// or to allow all
header('Access-Control-Allow-Origin: *');
0 голосов
/ 02 декабря 2017
var settings = {
  "async": true,
  "crossDomain": true,
  "url": "YOUGETURL",
  "method": "GET",
  "headers": {
    "authorization": "Basic Z3NsYWI6cGFzczFnczFhYg==",
    "cache-control": "no-cache"

  }
}

$.ajax(settings).done(function (response) {
  console.log(response);
});
...