0

我有一个 jquery ajax 调用需要传递一个 auth 标头。我尝试了几种不同的方法。但是我的ajax调用目前看起来像这样......

        $.ajax({
        headers: {"Authorization": "Basic YgBhAHMAaQBjACAAbAAxAHQAdABsADMAcAAxAGcAbAAxAHQAdABsADMAcAAxAGcAOgBsADMAKwBtADMAMQBuAA=="},
        url: fetchurl,
        type: 'GET',
        dataType: 'json',
        async: false,
        contentType: 'application/json; charset=utf-8',
        success: function (data) {
            $.each(data, function (key, val) {
                $('<option/>').attr('value', val.ProductCd)
                    .html(val.ProductCd + " - " + val.Description)
                    .appendTo(productselect);
            });
            $.unblockUI();
        },
        error: function (error, textStatus, errorThrown) {
            alert(textStatus);
        }
    });

我认为我的解码问题可能与谁在进行编码有关,所以我通过 C# 类生成了该令牌并将其粘贴到我的脚本代码中。

我还尝试使用插件在 jquery 中进行编码并使用 beforesend 回调来设置标题。

在这里我尝试解码:

          string authToken = actionContext.Request.Headers.Authorization.Parameter;
          string decodedToken = Encoding.UTF8.GetString(Convert.FromBase64String(authToken));



          string username = decodedToken.Substring(0, decodedToken.IndexOf(":"));
          string password = decodedToken.Substring(decodedToken.IndexOf(":") + 1);

我的结果几乎总是一样的。

解码身份验证头后,我得到垃圾:“�w0u�\n�ZXNTLMSSP\0\0\0\0\0\0\0\0X\0\0\0\0\0\0\0X\0\ 0\0\0\0\0\0X\0\0\0\0\0\0\0X\0\0\0\0\0\0\0X\0\0\0\0\0\ 0\0X\0\0\0��\0\0\0I���ۛ��l�Y��#��\0\0\0��P-\"��\0\0\ 0\0"

4

1 回答 1

1

好的。这花了一些时间,但我终于发现,当我从我的 ajax 调用发送基本身份验证时,web api 层正在接收协商身份验证。所以我进入IIS禁用了Web服务上的所有身份验证,除了匿名。然后瞧。

于 2013-01-24T14:36:09.963 回答