【问题标题】:ASP.NET Web API: Change Request HeadersASP.NET Web API:更改请求标头
【发布时间】:2015-07-27 14:27:28
【问题描述】:

我无法控制的 JavaScript 客户端正在向我的 Web API 服务发送不正确的 HTTP 请求标头。更具体地说,它使用的库发送了不正确的 OData 标头。

有什么方法可以在 HTTP 请求到达我的服务之前拦截它?我可以添加/删除/更新标题或查询字符串信息吗?

例如,如果我收到以下 HTTP 标头:

GET /Some/API HTTP/1.1
Host: myhost.com:80
MaxDataServiceVersion: 2.0

我想知道如何在 OData 库接管之前将其修改为以下内容:

GET /Some/API HTTP/1.1
Host: myhost.com:80
MaxDataServiceVersion: 4.0

【问题讨论】:

    标签: asp.net http asp.net-web-api


    【解决方案1】:

    标题不正确。您的客户端需要 OData v2 服务,即使您确实操作了标头,它也可能无法理解来自您服务器的响应。

    但如果您真的想尝试该路由,可以使用简单的 HTTP 代理来重写标头。

    如果您这样做,请确保您的 OData 服务器支持 Atom 格式,因为 OData JSON 格式在版本 2 和 4 之间完全改变,因此 JavaScript 客户端无法理解它。 Atom 格式也发生了变化,但如果客户端的解析器非常宽松,它可能会起作用。

    【讨论】:

    • 了解 OData 版本问题,但我们认为我们正在使用的库中存在一个特定于 MaxDataServiceVersion 标头的错误,我们希望通过更改请求标头来解决这个问题。我希望你会说使用 ASP.NET 过滤器可以修改传入的请求标头,但我们总是可以探索代理路由。
    猜你喜欢
    • 2016-03-12
    • 2018-08-27
    • 1970-01-01
    • 2015-04-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-16
    相关资源
    最近更新 更多