我只是向我的WebAPI方法发出AJAX GET请求-IE很好,但是Chrome和Firefox返回401未经授权错误。

这是我的jQuery客户端代码,可对我的WebAPI进行AJAX调用:

(function ($) {
    $.displayToastrNotifications = function (appId) {
        $.support.cors = true;
        var userId = '';

        // get current user's ID
        $.ajax({
            url: 'http://server/AppTools/API/Identity/GetCurrentlyLoggedInUserId',
            type: 'GET',
            dataType: 'text',
            crossDomain: true,
            success: function (data) {
                userId = data;
                // get all messages for the app
                $.ajax({
                    url: 'http://server/AppToolsWS/api/BulletinBoard/GetMessagesForApp/' + appId,
                    type: 'GET',
                    dataType: 'json',
                    crossDomain: true,
                    success: function (data) {
                        DisplayToasterNotifications(data);
                    },
                    error: function (x, y, z) {
                        alert('getmessagesforapp: ' + x + '\n' + y + '\n' + z);
                    }
                });
            },
            error: function (x, y, z) {
                alert('getuserid: ' + x + '\n' + y + '\n' + z);
            }
        });
...

这是我的WebAPI方法:
[EnableCors("*", "*", "*")]
public class IdentityController : ApiController
{
    [HttpGet]
    public HttpResponseMessage GetCurrentlyLoggedInUserId()
    {
        var userid = string.Empty;
        try
        {
            userid = HelperClasses.StringHelper.GetLogonUserID();
        }
        catch (Exception ex)
        {

        }

        return this.Request.CreateResponse(HttpStatusCode.OK, userid, "text/plain");
    }
}

我可以在任何浏览器中手动导航到此方法,它会成功返回数据。很奇怪,我不确定为什么要在Firefox和Chrome中这样做-我在公司内联网上使用AD-有什么想法吗?

最佳答案

请将其添加到您的web.config

<location path="api">
    <system.web>
        <authorization>
            <allow users="*"/>
        </authorization>
    </system.web>
</location>

您可以在这里找到更多信息:

http://msdn.microsoft.com/en-us/library/wce3kxhd%28v=vs.100%29.aspx

Disable Windows Authentication for WebAPI

10-05 22:33