Fiddler HTTP / 1.1 401未经授权

时间:2014-10-13 22:40:12

标签: authentication asp.net-web-api authorization fiddler

我有本地Web API项目,它没有通过本地IIS运行。要运行该项目,我在Visual Studio 2013中使用F5。

使用Fiddler,我一直得到:

HTTP/1.1 401 Unauthorized

#   Result  Protocol    Host    URL Body    Caching Content-Type    Process Comments    Custom  88  401 HTTP    localhost:52787 /api/values 6,180   private text/html; charset=utf-8    fiddler:10724           

我知道我应该得到200但我不是。我应该在哪里检查我做错了什么?

以下是浏览器的屏幕截图。当我回到Fiddler查看结果时,我得到了这个,我只需在URL中输入http://localhost:52787/api/helloapi(在浏览器中)并输入:

enter image description here

这是我通过Fiddler手动编写GET时得到的结果:

enter image description here

我选择了自动验证选项。

4 个答案:

答案 0 :(得分:9)

当你说"使用Fiddler"时,你的意思是什么

如果您使用Fiddler的编辑器手动撰写请求,请自行添加Authorization标题,或点击作曲家的选项标签并选中Automatically Authenticate框。

答案 1 :(得分:1)

我遇到了同样的问题。在我的情况下,它是由web.config中的deny子句引起的,该子句强制所有用户都经过身份验证。这在浏览器中运行良好,因为它处理幕后身份验证并发送适当的授权Cookie。在Fiddler中,这种握手没有发生,因此401.在开发环境中将它添加到你的web.config中它应该可以工作。

<system.web>
       <authorization> 
           <allow users="?" /> 
      </authorization>  
</system.web>

答案 2 :(得分:0)

我知道这是一篇较旧的文章,但如果有人(例如我)仍在寻找答案,而以上答案仍不能解决问题,请尝试此解决方案-

由于我已经在我的web.config文件中正确设置了false true元素,因此在由VS 2017和VSTS组成的dev env中,上述答案不起作用。经过几番尝试之后,我发现问题的根源在其他地方。

我需要对“ applicationhost.config”文件进行以下更改,该文件通常可以在路径“ $infolder = Get-ChildItem C:\folder\*.txt -rec foreach ($file in $infolder) { (Get-Content $file.PSPath) | Foreach-Object { $_[15] -replace '-18','-2018'} | Set-Content $file} ”下找到-

找到<authorization>元素,并确保将“ enabled”属性设置为“ true”,如下所示:

C:\Users\xxx\Source\Repos\yyy\yyy\.vs\config

答案 3 :(得分:0)

发生这种情况是因为您在ValuesController上具有Authorize属性 [授权] 公共类ValuesController:ApiController

只需删除ValuesController上的[Authorize]属性