【问题标题】:ASP.NET windows authentication + ajax= 403 error status codeASP.NET windows 身份验证 + ajax= 403 错误状态码
【发布时间】:2019-01-07 15:14:17
【问题描述】:

我在我的网站中使用 asp.net windows 身份验证。 认证通过后网站正常运行(甚至ajax请求都被授权)。

但是当我对服务器进行 ajax 调用一段时间后,服务器返回 403 状态码(未授权)。

这是什么原因,我该如何解决?

是这样的:

1- 首先我使用我的 LDAP 凭据登录

2- 包含一个使用 ajax 获取数据的按钮的页面打开

3-点击按钮时获取数据。但是在网站处于空闲模式一段时间后没有向服务器发出任何请求,AJAX调用返回403状态(禁止)

请注意,当我重定向到其他页面时,一切正常。我没有返回 403 状态码。

这里是ajax请求:

$.ajax({
        url: '/GetFilteredRecords/', 
        data://filter goes here,
        type: 'GET',
        success: function (result) { 
           //display result
        },
        error: function (result) {
           alert("something went wrong");
        }
});

【问题讨论】:

  • 您的身份验证令牌或 cookie 已过期。你需要刷新它。
  • 或者;请edit 将问题限制为具有足够详细信息的特定问题,以识别适当的答案,例如通过提供一些代码或有关身份验证的更多详细信息。
  • @Stephan 我更新了问题以获得更多说明。你还觉得cookie过期了吗?
  • 你能显示进行 ajax 调用的脚本吗?
  • @Stefan 我在问题的底部添加了 ajax 请求。你怎么看?

标签: c# asp.net ajax windows-authentication


【解决方案1】:

这是 Windows 身份验证的正常行为。 Windows 身份验证支持多种身份验证协议 - Kerberos、NTLM,也许还有其他。您的浏览器尝试一种身份验证方法,当它失败时,它会尝试另一种身份验证方法,直到成功。你不应该担心这个。如您所见,对同一 URL 的第二次请求成功。您可以查看每个请求的身份验证标头以了解它的具体作用。

【讨论】:

  • 谢谢@Tashi Asher。但是为什么 ajax 请求的身份验证超时而不是页面重定向或刷新?是否有我应该更改的超时参数?
  • @Fadi.AM 我不知道。我们在 AJAX 调用中也看到了这一点,但没有调查整页请求。我们不用太担心这个。
猜你喜欢
  • 2015-01-31
  • 1970-01-01
  • 1970-01-01
  • 2017-07-05
  • 2013-11-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多