建立httpheader连接:保留小写的“ keep-alive”

埃德加

我尝试添加新标头的内容:

request.Headers.GetType().InvokeMember("ChangeInternal",
    BindingFlags.Instance | BindingFlags.NonPublic | BindingFlags.InvokeMethod,
    Type.DefaultBinder, request.Headers, new object[] { "Connection", "keep-alive" }
);

实际上,它keep-alive在Connection中添加了标头,但并没有取代旧的标头。这样我就知道了Connection: Keep-Alive,keep-alive

我尝试了反射实验,但没有任何效果。

关于此还有其他类似的问题,但没有解决方案。

赫尔

只需执行以下操作:

request.Headers.Remove("Connection");
request.Headers.Add("Connection", "keep-alive");

不需要通过反射设置这些标头。首先,删除旧条目很重要,因为Add如果键已经存在,则调用添加另一个值(使用逗号分隔的值所看到的结果)。

最好使用HttpRequestHeader枚举而不是标头名称作为字符串:

request.Headers.Remove(HttpRequestHeader.Connection);
request.Headers.Add(HttpRequestHeader.Connection, "keep-alive");

编辑:

我的错。Connection在这种情况下,必须使用请求对象上的显式属性:

request.Connection = "keep-alive";

仅供参考:还有更多标头必须通过其显式属性进行设置。有关列表,请参见此页面的部分说明https : //msdn.microsoft.com/zh-cn/library/System.Net.HttpWebRequest%28v=vs.110%29.aspx

编辑2:

好了,查看connection属性的源代码,您可以看到它限制了设置这些值:

bool fKeepAlive = text.IndexOf("keep-alive") != -1;
bool fClose = text.IndexOf("close") != -1;
if (fKeepAlive || fClose)
{
    throw new ArgumentException(SR.GetString("net_connarg"), "value");
}

因此,您有2个选择:

  1. 坚持使用大写值(我喜欢)作为反正你有没有真正为它是小写的原因(“所以我想到底有没有标头,我的例如Firefox浏览器。”)。而且正如Darin Dimitrov所述,标头无论如何都不应该区分大小写。
  2. 以这种方式扩展反射方法,首先删除标题,然后再次将其设置为小写。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

建立httpheader连接:保留小写的“ keep-alive”

来自分类Dev

python keep-alive连接并下载图片

来自分类Dev

如何通过HttpClient以小写形式设置“ Connection:keep-alive”标头?

来自分类Dev

Connection:keep-alive没有在NodeJS中保持HTTP请求的套接字连接

来自分类Dev

处理http Keep-Alive连接时,如何使用netty将响应映射到请求url

来自分类Dev

Keep function namespace alive for debugging in IPython

来自分类Dev

Explain http keep-alive mechanism

来自分类Dev

支持CoAP的Keep-alive功能

来自分类Dev

HAProxy Keep-Alive无法正常工作

来自分类Dev

Vuejs <keep-alive>有什么意义?

来自分类Dev

HTTP Keep-Alive 到不同的主机

来自分类Dev

PoolingHttpClientConnectionManager 和 keep-alive 设置

来自分类Dev

由于缺少Keep-Alive标头而导致HTTP 2上的Socket.io永久断开连接

来自分类Dev

Python请求使用Keep-alive加快速度

来自分类Dev

HTTP Keep-Alive是否可以维持长时间的轮询?

来自分类Dev

jQuery keep Alive /任何客户端交互?

来自分类Dev

PHP curl Keep-Alive - CURLOPT_FORBID_REUSE

来自分类Dev

尝试重用HTTP连接来处理Keep-Alive标头时,通过从客户端读取第二个请求来阻止recv

来自分类常见问题

如何在docker image中禁用SpringBoot应用程序中的Keep alive

来自分类Dev

带有HTTPS,SSL客户端证书和Keep-Alive支持的Ruby的HTTP库?

来自分类Dev

如何查看HTTP服务器的Keep-alive超时时间?

来自分类Dev

您可以通过HTTP代理使用CONNECT请求的Keep-Alive吗?

来自分类Dev

Firefox Keep-Alive,升级通过Apache反向代理破坏了Websocket

来自分类Dev

如何在配置了Apache-Nginx的Web服务器中启用Keep-Alive [DirectAdmin]

来自分类Dev

如何在Codename One中的ConnectionRequest中使用keep-alive?

来自分类Dev

VueJS和Keep-Alive:为什么控制台出错?

来自分类Dev

使用NuxtJS(VueJS)和<keep-alive />突变问题设置动态ActionBar标题

来自分类Dev

在OkHTTP中,如何将keep-alive设置为false?

来自分类Dev

websocket与带有header connection-keep-alive = million的http有何不同

Related 相关文章

  1. 1

    建立httpheader连接:保留小写的“ keep-alive”

  2. 2

    python keep-alive连接并下载图片

  3. 3

    如何通过HttpClient以小写形式设置“ Connection:keep-alive”标头?

  4. 4

    Connection:keep-alive没有在NodeJS中保持HTTP请求的套接字连接

  5. 5

    处理http Keep-Alive连接时,如何使用netty将响应映射到请求url

  6. 6

    Keep function namespace alive for debugging in IPython

  7. 7

    Explain http keep-alive mechanism

  8. 8

    支持CoAP的Keep-alive功能

  9. 9

    HAProxy Keep-Alive无法正常工作

  10. 10

    Vuejs <keep-alive>有什么意义?

  11. 11

    HTTP Keep-Alive 到不同的主机

  12. 12

    PoolingHttpClientConnectionManager 和 keep-alive 设置

  13. 13

    由于缺少Keep-Alive标头而导致HTTP 2上的Socket.io永久断开连接

  14. 14

    Python请求使用Keep-alive加快速度

  15. 15

    HTTP Keep-Alive是否可以维持长时间的轮询?

  16. 16

    jQuery keep Alive /任何客户端交互?

  17. 17

    PHP curl Keep-Alive - CURLOPT_FORBID_REUSE

  18. 18

    尝试重用HTTP连接来处理Keep-Alive标头时,通过从客户端读取第二个请求来阻止recv

  19. 19

    如何在docker image中禁用SpringBoot应用程序中的Keep alive

  20. 20

    带有HTTPS,SSL客户端证书和Keep-Alive支持的Ruby的HTTP库?

  21. 21

    如何查看HTTP服务器的Keep-alive超时时间?

  22. 22

    您可以通过HTTP代理使用CONNECT请求的Keep-Alive吗?

  23. 23

    Firefox Keep-Alive,升级通过Apache反向代理破坏了Websocket

  24. 24

    如何在配置了Apache-Nginx的Web服务器中启用Keep-Alive [DirectAdmin]

  25. 25

    如何在Codename One中的ConnectionRequest中使用keep-alive?

  26. 26

    VueJS和Keep-Alive:为什么控制台出错?

  27. 27

    使用NuxtJS(VueJS)和<keep-alive />突变问题设置动态ActionBar标题

  28. 28

    在OkHTTP中,如何将keep-alive设置为false?

  29. 29

    websocket与带有header connection-keep-alive = million的http有何不同

热门标签

归档