2011-08-05 113 views
1

我正在使用jquery发出一个ajax请求,并且一切正常,除了页面被保护,所以只有登录后才能发出请求。我已经登录,但我认为jquery ajax不会发送我的cookie到网址。我怎样才能解决这个错误,这样cookies,头文件也会被发送出去,这样页面就不会把它当成401请求呢?Ajax jquery未经授权的请求

感谢提前:)

回答

1

这听起来像你想从您的网站上运行的一个要求在不同域的页面。如果是这样的话,那就是浏览器告诉你这个请求是未授权的,而不是其他的网站。

编辑:

如果是这样的话,你控制的其他网站,那么我相信你可以使用一个特定的报头(http://www.w3.org/TR/2008/WD-access-control-20080912/#access-control-allow-origin)允许请求。如果你不控制其他服务器,那么这个问题没有(纯粹的JavaScript)方式。

您可以在您控制的服务器上运行代理以请求该页面并将其传递给您。但是,这仍然存在问题,即它将在没有用户Cookie的情况下请求该页面。

+0

其实我有一个基本的身份验证(Windows身份验证)设置以及表单身份验证。这可能是jquery ajax的问题​​吗? – Jaggu

+0

如果您自己在请求中设置标头,它看起来像是基本验证(http://dothow.blogspot.com/2009/05/http-basic-authentication-with-jquery.html)。当然,如果请求与页面来自同一个域,这仍然只能工作。 – alnorth29

-1

您仍然可以查看会议正常

+0

我不明白你在讲什么。但在小提琴手中,我得到了401的要求。 – Jaggu

+0

这不是一个真正有用的答案。也许增加更多细节或解释你的意思 –

+0

对不起,因为这是一个ASP.NET相关的问题。在PHP中通过AJAX仍然可以检查$ _SESSION来授权用户的请求。 – sonnb

0

我的jQuery的解决方案: 在你的Ajax调用(基本授权):

headers: { 
       "Authorization": "Basic " + btoa('username:password') 
}, 

beforeSend: function (xhr){ 
       xhr.setRequestHeader('Authorization', "Basic " + btoa('username:password')); 
}, 
相关问题