ajax调用在Web应用程序项目中引发意外登录对话框

时间:2018-02-14 15:21:56

标签: asp.net ajax authentication web-config

将网站项目转换为Web应用程序项目后,我遇到了Windows身份验证问题。我开始使用WinForms和Windows身份验证创建一个新的Web应用程序项目。然后,除了删除不需要的默认内容并复制我自己的内容外,我注意到登录对话框出现在我没想到的地方。

要暂时解决此问题,我只需更改以下内容即停用身份验证:

<authentication mode="Windows"/>

为:

<authentication mode="None"/>
web.config中的

。类似:<allow users="?"\><allow users="*"/> 我现在可以访问所有aspx页面,但仍然从aspx页面获取ajax调用的登录对话框。

使用Fiddler我发现ajax调用看起来没问题:

    POST http://localhost:60578/...bla_bla.aspx/GetSampleDescription HTTP/1.1
    Accept: application/json, text/javascript, */*; q=0.01
    Content-Type: application/json; charset=utf-8
    X-Requested-With: XMLHttpRequest
    Referer: http://localhost:60578/...bla_bla
    Accept-Language: nl-NL
    Accept-Encoding: gzip, deflate
    User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; rv:11.0) like Gecko
    Host: localhost:60578
    Content-Length: 15
    DNT: 1
    Connection: Keep-Alive
    Pragma: no-cache
    Cookie: ASP.NET_SessionId=vieai......yy1txo

    {"Barcode":"4"}

但是,回复是401 Unauthorized。

然后,IE浏览器使用额外的授权标头重复请求,该标头失败等等。

问题是:为什么上面的ajax调用获得401 Unauthorized响应,而aspx页面获得200 OK? web.config中的哪个设置可以解决这个问题?这里有其他因素吗?

1 个答案:

答案 0 :(得分:0)

aspx的方法通常不作为端点暴露给外界。您应该将GetSampleDescription方法移动到asmx或类似的东西。