【问题标题】:Response headers Content-Type changes based on the program I use to send the request响应标头 Content-Type 根据我用来发送请求的程序而改变
【发布时间】:2020-04-03 18:47:50
【问题描述】:

这里有一个问题,我会很感激其他人的关注。

我设置了一个 Web 服务器以返回内容类型为“application/xml”的响应。

当我从用于同步数据的应用程序发送请求时,我在响应标头和 XML 格式的正文中得到“应用程序/xml”,这是我应该做的(请参阅下面的 Fiddler 捕获的内容):

当我从 Advanced Rest Client(ARC) 发送请求时,我也得到了所需的响应(见下文):

但是,当我在 Postman 中发送完全相同的请求时,我在响应标头中得到一个“应用程序/json”作为内容类型,并且正文被格式化为 JSON。 (见下文):

这是我的控制器的屏幕截图,它返回响应:

有没有人遇到过这样的事情?我在 IIS 中没有设置响应标头的任何设置。我确实注意到 Postman 中的语言检测设置只有 AUTO 和 JSON。应该有一个 XML 选项吗?任何帮助是极大的赞赏。 ARC 版本 (14.0.2) 邮差版本(7.21.1)

【问题讨论】:

    标签: asp.net rest postman


    【解决方案1】:

    content-type 标头描述了邮件正文中的内容。
    在传入请求中更改它不会有任何区别。

    我希望在这样的控制器的情况下,请求正文已经被基于该标头的反序列化器解析为 Sale 对象。

    accept header 由客户端设置以指示它可以将哪些值理解为响应。
    优先级中通常有多个值并具有加权系统。
    例如,浏览器优先考虑“tex​​t/html”。

    在 Web API 中,如果您只是 return this.Ok(someModel);,则接受标头用于确定应该使用哪个序列化程序来格式化响应。

    您可以更改所有这些设置,但在您的情况下,听起来您需要更改 Postman 设置的接受标头,以使 XML 成为这些请求的更高优先级。

    【讨论】:

    • 我发现“Accept”标头设置为“/”。我猜这种接受所有格式会在 Postman 中赋予 JSON 更多的权重?将其更改为 Accept application/xml 就可以了。谢谢!
    • 如果邮递员没有真正指定一个首选项,那么应用程序本身可能会根据它所做的其他优先级来选择一个。甚至可能是加载格式化程序的顺序或同样任意的顺序。在 Postman 中设置值可能是获得所需内容的正确和最安全的方法!很高兴这有帮助。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-20
    • 1970-01-01
    • 1970-01-01
    • 2022-12-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多