2013-03-11 4 views
2

JQuery 1.9.1JQuery Ajax Авторизация Токен Заголовок Сбой

Запрос никогда не отправляется и, кажется, только без ошибок. console.log вывод показывает Request failed: error Я не знаю, как отлаживать это дальше.

$.ajax({ 
    beforeSend: function (xhr) { xhr.setRequestHeader ('Authorization', 'Token c576f0136149a2e2d9127b3901015545') }, 
    type: "GET", 
    url: "https://example.com/endpoint", 
    dataType: "json" 
}).done(function(msg) { 
    console.log(msg); 
}).fail(function(jqXHR, textStatus, errorThrown) { 
    console.log("Request failed: " + textStatus); 
    console.log(errorThrown); 
}); 

Проверка сетевого трафика в Google Chrome показывает

  • Method: OPTIONS
  • Status: (canceled)
  • Type: Pending

Однако использование завиток работает отлично:

curl https://example.com/endpoint -H 'Authorization: Token token="c576f0136149a2e2d9127b3901015545"'

Вот jsFiddle: http://jsfiddle.net/2vtyD/1/

Примечание: это не проблема с Access-Control-Allow-Origin, как у меня есть эта часть работает.

Я знаю, что я должен быть что-то не хватает ...

Update:

Все отлично работает, когда я переключаюсь на http. Только при использовании https эта проблема возникает. Я думал, что это может быть потому, что я использую самозаверяющий сертификат (недействительный). Но другие запросы SSL (неавторизация, т.е. не «ОПЦИИ») работают очень хорошо. Таким образом, это всего лишь комбинация запросов SSL и OPTIONS. Статус в chrome отменяется, и, глядя на журналы сервера, журналы apache показывают некоторую активность, но это никогда не делает это веб-приложение rails.

Вот sniplet журнала апача:

[info] [client 10.0.2.2] (70007)The timeout specified has expired: SSL input filter read failed. 
[info] [client 10.0.2.2] Connection closed to child 10 with standard shutdown (server example.com:443) 
[info] [client 10.0.2.2] Connection to child 11 established (server example.com:443) 
[info] Seeding PRNG with 656 bytes of entropy 
[info] [client 10.0.2.2] (70014)End of file found: SSL input filter read failed. 
[info] [client 10.0.2.2] Connection closed to child 11 with standard shutdown (server example.com:443) 

Однако эти типы сообщений происходят для всех запросов SSL. Поэтому я в основном не понимаю, как это сделать.

ответ

1

Используйте действительный сертификат SSL.

По какой-либо причине запросы GET, POST, PUT и DELETE работают нормально с самоподписанным сертификатом. Но запрос OPTIONS не делает. Используя действующий SSL-сертификат, все будет работать нормально.

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