无法从jQuery对CouchDB进行身份验证

时间:2014-05-12 17:35:47

标签: jquery couchdb http-authentication

我有一个CouchDB实例正在运行,我正在尝试使用cookie身份验证来连接Ember应用程序。

从命令行我可以使用:

成功进行身份验证
curl -vX POST $HOST/_session -H 'Content-Type: application/json' -d '{ "name": "will", "password": "secret" }'

这会生成以下请求:

POST /_session HTTP/1.1
User-Agent: curl/7.32.0
Host: 127.0.0.1:5984
Accept: */*
Content-Type: application/json
Content-Length: 40

我的javascript用于相同的操作:

$.ajax( {
  type: 'POST',
  url: "%@/_session".fmt( App.Host ),
  data: JSON.stringify( { user: $('#username').val(), password: $('#password').val() } ),
  dataType: 'json',
  contentType: 'application/json'
} )

这会创建相应的请求:

Accept:application/json, text/javascript, */*; q=0.01
Accept-Encoding:gzip,deflate,sdch
Accept-Language:en-US,en;q=0.8,fr;q=0.6
Connection:keep-alive
Content-Length:35
Content-Type:application/json
Host:localhost:5984
Origin:http://localhost
Referer:http://localhost/~will/howlin-wolf/www/
User-Agent:Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/34.0.1847.116 Safari/537.36

虽然响应是401,未经授权。

然后使用x-www-form-urlencoded信息获得相同的结果。卷曲请求有效:

curl -vX POST $HOST/_session -d 'name=will&password=secret'

jQuery没有:

$.ajax( {
  type: 'POST',
  url: "%@/_session".fmt( App.Host ),
  data: "user=%@&password=%@".fmt( $('#username').val(), $('#password').val() )
} )

1 个答案:

答案 0 :(得分:0)

我在jQuery请求中使用user时应该是name