我正在使用jquery发出一个ajax请求,并且一切正常,除了页面被保护,所以只有登录后才能发出请求。我已经登录,但我认为jquery ajax不会发送我的cookie到网址。我怎样才能解决这个错误,这样cookies,头文件也会被发送出去,这样页面就不会把它当成401请求呢?Ajax jquery未经授权的请求
感谢提前:)
我正在使用jquery发出一个ajax请求,并且一切正常,除了页面被保护,所以只有登录后才能发出请求。我已经登录,但我认为jquery ajax不会发送我的cookie到网址。我怎样才能解决这个错误,这样cookies,头文件也会被发送出去,这样页面就不会把它当成401请求呢?Ajax jquery未经授权的请求
感谢提前:)
这听起来像你想从您的网站上运行的一个要求在不同域的页面。如果是这样的话,那就是浏览器告诉你这个请求是未授权的,而不是其他的网站。
编辑:
如果是这样的话,你控制的其他网站,那么我相信你可以使用一个特定的报头(http://www.w3.org/TR/2008/WD-access-control-20080912/#access-control-allow-origin)允许请求。如果你不控制其他服务器,那么这个问题没有(纯粹的JavaScript)方式。
您可以在您控制的服务器上运行代理以请求该页面并将其传递给您。但是,这仍然存在问题,即它将在没有用户Cookie的情况下请求该页面。
我的jQuery的解决方案: 在你的Ajax调用(基本授权):
headers: {
"Authorization": "Basic " + btoa('username:password')
},
或
beforeSend: function (xhr){
xhr.setRequestHeader('Authorization', "Basic " + btoa('username:password'));
},
其实我有一个基本的身份验证(Windows身份验证)设置以及表单身份验证。这可能是jquery ajax的问题吗? – Jaggu
如果您自己在请求中设置标头,它看起来像是基本验证(http://dothow.blogspot.com/2009/05/http-basic-authentication-with-jquery.html)。当然,如果请求与页面来自同一个域,这仍然只能工作。 – alnorth29