【问题标题】:401 Unauthorized error with Jquery post and MVCJquery post和MVC出现401未经授权的错误
【发布时间】:2012-07-02 15:17:37
【问题描述】:

我正在构建一个使用 Windows 身份验证的 MVC 应用程序。我想通过使用 Jquery post 向服务器发布帖子来处理下拉列表更改事件。

下面是我要调用的Controller方法:

[HttpPost]
public JsonResult UpdateConversion(int conversionId, int? conversionStandardId)
{
    // Some statements here
}

下面是处理下拉菜单的onchange事件的javascript函数:

function onConversionValueChange() {
    var input = $(this);
    var conversionId = input.attr('id').replace('ConversionFor', '');
    var selectedValue = input.val();

    if (selectedValue == '') {
        $.post(Conversions._UpdateConversionURL, { conversionId: conversionId }, onConversionValueChanged);
    }
    else {
        $.post(Conversions._UpdateConversionURL, { conversionId: conversionId, conversionStandardId: selectedValue }, onConversionValueChanged);
    }
}

我不认为这些方法有什么问题,因为当我最初加载页面并进行更改时,post 调用会工作多次。但过了一段时间,它在一个事件中调用了 3 次帖子,并在所有事件上返回 401 未经授权的错误。尽管第三次调用似乎成功了。

谁能帮我解决这个问题?谢谢。

【问题讨论】:

    标签: asp.net-mvc asp.net-mvc-3 jquery


    【解决方案1】:

    这正是 Windows 身份验证 (NTLM) 的工作原理。这是一种质询/响应身份验证方案,客户端发送请求,服务器通过生成随机数来质询客户端以证明他具有正确的凭据,然后客户端进行身份验证。你可以在这里阅读更多:http://www.innovation.ch/personal/ronald/ntlm.html

    通常,一旦通过身份验证,用户代理不需要经历后续请求的所有阶段,并且应该能够直接发送身份验证凭据。

    【讨论】:

      猜你喜欢
      • 2023-03-23
      • 1970-01-01
      • 1970-01-01
      • 2014-10-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-11-15
      相关资源
      最近更新 更多