401即使在提供授权后,也未经授权使用Jquery Ajax

时间:2015-02-04 07:37:07

标签: jquery ajax get cross-browser http-status-code-401

我正在尝试进行Jquery Ajax调用,如下所示 -

$.support.cors = true;
var lookupReq = $.ajax({url:link, async:false, type: "GET", beforeSend : function(req) { 
    req.setRequestHeader('Authorization', auth); 
} });

我已经检查了auth值并且它是正确的。我已经检查了Fiddler中的Header请求信息,并在那里获得了正确的授权信息 -

Authorization Header is present: Basic RFQ3MzYwNjpEc3R3c0A0NTY=
Decoded Username:Password= DT73606:Dstws@456

但我仍然在Fiddler回复中获得401 Unauthorized错误 -

HTTP/1.1 401 Unauthorized
Server: Apache-Coyote/1.1
X-Powered-By: Servlet 2.5; JBoss-5.0/JBossWeb-2.1
WWW-Authenticate: BASIC realm="AWD"
Content-Type: text/plain
Transfer-Encoding: chunked
Date: Wed, 04 Feb 2015 07:15:57 GMT

10
Session expired.
0

当我从mozilla和RestClient尝试传递用户名和密码时,此请求正常工作并提供HTTP 200 OK。 这里有什么问题?请帮忙。

修改

令我惊讶的是Restclient很容易出错。即使我提供了错误的基本授权值,它也会响应HTTP 200 OK。

昨天我有一个非常有趣的场景 -

当我在清理历史记录和缓存后从IE调用链接时,它要求输入用户名和密码,并在提交正确的凭据后,它正在响应HTTP 200 OK(显示图像)。但是当我们尝试使用代码时,它会出错。现在,此代码在此调用之前还包含许多其他调用。此外,此调用(链接)触发一些身份验证(检查包含JSESSIONID的cookie,如果不存在,则需要授权详细信息进行验证,如果成功,则创建新的JSESSIONID并将其传递以进行进一步调用)。 我怀疑在我们的代码中,因为我们正在进行其他调用,当我们进行此链接调用时,它会查找JSESSIONID并找到它(这就是为什么即使在重复尝试提供Login detals之后它仍然显示401错误)。 现在,我们需要确保此链接调用采用正确的JSESSIONID,否则接受提供的登录详细信息。

欢迎任何形式的建议。

0 个答案:

没有答案