Firefox从我的Web API网站请求XML和IE请求JSON,更改浏览器设置的内容是什么?

时间:2015-08-11 06:39:05

标签: json xml asp.net-web-api

我有一个ASP.NET Web API网站,有时我只想查看HTTP GET返回的数据。虽然我知道如何通过编程获得XML或JSON,但我不知道在哪里更改浏览器的设置(IE,Firefox和Chrome)以请求XML或JSON?

2 个答案:

答案 0 :(得分:8)

ASP.NET Web API基于Accept标头返回JSON或XML。

不同的浏览器具有不同的默认Accept标头。至于我:

<强>火狐:

text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,image/jpeg,image/gif;q=0.2,*/*;q=0.1

由于text/xml是最优选的, WebAPI会返回Firefox的XML

<强> IE:

application/x-ms-application, image/jpeg, application/xaml+xml, image/gif, image/pjpeg, application/x-ms-xbap, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, */*

<强>铬:

*/*

由于XML和JSON同样可以接受, WebAPI选择JSON

如何更改这些设置

IE 根据注册表项生成Accept标头值:

HKLM\Software\Microsoft\Windows\CurrentVersion\Internet Settings\Accepted Documents

Firefox将其存储在变量Network.http.accept.default 中 您可以在about:config标签中更改

我还没有找到有关 Chrome 的信息。可能您可以使用ModHeader扩展来执行此操作。

答案 1 :(得分:2)

我正在使用Visual Studio 2015构建WebAPI。 我正在使用Firefox进行测试。 我运行了基本项目,并尝试调用以下WebAPI请求以获取对象(序列化为JSON)。 当我通过Firefox进行调用时出现错误,因为Firefox请求XML和WebAPI尝试将对象默认为JSON,但没有自动生成XML的概念。 firefox 0

解决

要修复此问题,您必须转到firefox的导航栏并输入:

about:config<ENTER>

您将看到一个警告屏幕。单击按钮继续。

然后,您将看到可配置项目列表 我们想要network.http.accept.default

network http accept default

如果您在顶部搜索栏中输入单词“accept”,则最容易找到。

找到该项目后。双击它,您就可以编辑它。 我们只想添加一个值,告诉它请求JSON作为默认值。 此标头将告诉服务器JSON没问题。由于WebAPI测试没有设置要返回的特定类型,因此允许浏览器控制它。

当您双击该项目时,将弹出一个带有编辑框的对话框。 您只想将以下字符串添加到现有字符串的开头。

application/json,

确保为其添加一个尾随逗号,以将其与其他现有值分开。单击“确定”按钮。 add value

只要您进行了更改(单击“确定”以完成更改),您就可以返回到原始选项卡并再次调用API方法,它将按预期返回JSON。

solution works