0

我有一个在 WinCE 上运行的受密码保护的网站,在尝试访问安全页面时,将使用WWW-Authenticate.

我希望能够通过访问该页面来测试用户是否已登录。问题是,当我使用 jQuery ajax 请求尝试此操作时,浏览器会弹出登录框,就像用户导航到那里一样!如何防止登录框打开,而是让 jQuery 抛出错误

运行以下代码:

$.ajax({
url: '/web/secure/securepage.html',
success: function(data){ console.log(data) },
error: function (xhr, ajaxOptions, thrownError) {
        alert(xhr.status);
        alert(thrownError);
      }
});

使此框出现,而不是仅仅失败并显示错误消息

在此处输入图像描述

4

2 回答 2

1

您正在使用 HTTP 身份验证。如果客户端未登录,您获得登录框(AJAX 或其他)。

如果您可以在路径中保留一个不安全的页面,/web/secure/那么您可以尝试创建一个 ASP“登录测试”页面,如下所示:

  1. 在文件夹中创建一个不安全的 ASP 页面(没有 HTTP 身份验证)/web/secure/。您可以将其命名为/web/secure/logintest.asp.
  2. 将 AJAX 请求发送到/web/secure/logintest.asp(它是您在上面创建的页面。由于它不安全,您将不会获得登录弹出窗口)。
  3. 在 ASP 页面上检查请求标头是否包含Authorization使用. 如果标头值存在,则表示用户已获得授权并发送成功状态代码(200),否则发送客户端失败代码(4xx)。Authorization: Basic amltbXk6cGFnZQ==Request.ServerVariables("Authorization")
  4. 在客户端检查您的 AJAX 请求的响应并执行您的操作。

尝试在此处阅读 ASP for Win CE 。

我在这里指望的是,一旦 HTTP 授权成功,浏览器总是会Authorization在同一服务器路径下发送连续请求的标头(因此需要在其中创建不安全的页面/web/secure/)。如果用户已登录,您将能够通过检索 ASP 页面上的标题来判断它。

于 2012-12-13T10:18:49.607 回答
0

克里斯,您实际上可以在您的登录页面中添加一个条件,如果 url 由用户名和传递值组成,那么您可以将这些值应用于您的登录字段并使用 javascript 或 jQuery 启动按钮单击。

有可能有人可以在 url 上捕获这个值,但由于提交发生在几毫秒内,我想这无关紧要。

于 2012-12-13T09:47:53.180 回答