我有一个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() )
} )
答案 0 :(得分:0)
我在jQuery请求中使用user
时应该是name
。