2013-09-10 6 views
0

При доступе к базе данных CouchDB, защищенной локальным хостингом, через $.ajax, он запрашивает предупреждение, запрашивающее имя пользователя/пароль. Если я отменил запрос, CouchDB оповещает об ошибке, и мой обратный вызов ошибки. Если я передаю авторизованному пользователю URL-адрес (http://user:[email protected]), то обратный вызов success будет выполнен правильно.Аутентификация запросов ajax в CouchDB с помощью jQuery

Итак, можно сделать аутентифицированные запросы ajax на Couch и использовать собственные функции обработки ошибок?

Редактировать, код:

var request = $.ajax({ 
     url: myUrl, 
     type: "GET", 
     dataType: "jsonp", 
     success: function(){ 
      console.log("ok"); 
     }, 
     error: function(){ 
      console.log("error"); 
     } 
     }); 
  • Если myUrl не включает в себя учетные данные, как http://localhost:5984/mydb/handshakeDoc, ошибка обратного вызова никогда не выполняется после отмены приглашения.

  • Если myUrl содержит недопустимые учетные данные, такие как http://user:[email protected]:5984/mydb/handshakeDoc, сообщение об ошибке все еще появляется, и обратный вызов ошибки никогда не выполняется после отмены запроса.

  • Если myUrl включают действительные учетные данные, успех обратного вызова выполняется

+0

Чтобы уточнить - не вызывается ли $ .ajax.error при отмене приглашения? Что произойдет, если вы введете недопустимые учетные данные в приглашение? И, пожалуйста, напишите свой код. –

+0

Если я введу неверные учетные данные, появится приглашение. Код обновлен. – TMichel

+0

Вы даже отправляете какие-либо данные в URL?И что такое метод handshakeDoc api - я не могу найти его в документах couchdb. –

ответ

0

----- Возможное решение -----

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

Идея здесь заключается в том, чтобы устранить проблемы с кросс-доменной политикой и использовать http-сервер для проксирования нашего запроса локально для службы couchdb. Каждый запрос для example.com/couch будет перенаправлен на службу couchdb. Таким образом, вам больше не нужно использовать запрос jsonp.

Первоначальная проблема, которую вы задали о том, можете ли вы использовать собственную обработку ошибок, напрямую связана с запросами jsonp в jQuery, поскольку они не используют обработчики ошибок - они никогда не вызываются вообще. Конфигурация

Apache:

<VirtualHost 123.123.123.123:80> 
    ServerName example.com 

    ProxyPass   /couch  http://localhost:5984 
    ProxyPassReverse /couch  http://localhost:5984 
</VirtualHost> 

JQuery запрос Ajax:

var request = $.ajax({ 
    url: "http://example.com/couch", 
    dataType: "json", 
}).done(function() {console.log("done");}) 
    .fail(function() {console.log("fail");}) 
    .always(function() {console.log("always");}); 
}); 

----- Оригинальный пост -----

Вы можете попробовать это:

var request = $.ajax({ 
    url: myUrl, 
    type: "GET", 
    username: user, 
    password: pass, 
    dataType: "jsonp", 
    success: function(){ 
     console.log("ok"); 
    }, 
    error: function(){ 
     console.log("error"); 
    } 
    }); 

jQuery дает вам ссылку чтобы использовать базовый протокол HTTP через два параметра ajax (имя пользователя и пароль).

Или вы можете попробовать CouchDB jQuery plugin.

+0

спасибо, но уже попробовал использовать имя пользователя/пароль, не повезло (даже не используя правильные учетные данные) – TMichel

+0

Значит, у вас такая же ошибка с couchdb? –

+0

да, просто подскажите оповещение входа – TMichel

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