首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法在nghttp2示例中看到Http-设置标题。

无法在nghttp2示例中看到Http-设置标题。
EN

Stack Overflow用户
提问于 2019-07-08 18:28:03
回答 1查看 498关注 0票数 0

我目前正在尝试学习nghttp2,并试图执行在本页底部提供的客户端代码:

https://nghttp2.org/documentation/tutorial-client.html

我执行了上面的C代码,执行以下操作:

代码语言:javascript
复制
./libevent-client URL

我的服务器是Windows IIS 10.0,我希望在标题的输出中看到http2 2-设置框架。到目前为止,它显示了以下输出:

代码语言:javascript
复制
Connected
Request headers:
:method: GET
:scheme: https
:authority: MY URL
:path: /

Response headers from stream ID=1:
:status: 200
content-type: text/html
last-modified: Mon, 01 Jul 2019 17:57:17 GMT
accept-ranges: bytes
etag: "c7c5406c3630d51:0"
server: Microsoft-IIS/10.0
date: Mon, 08 Jul 2019 16:02:27 GMT
content-length:51
All headers received

<html><head>Hello</head><html>

我需要知道在代码中应该需要什么,以查看http-设置是否被传递到请求中。我知道,下面的功能是通过请求发送设置帧的工作:

代码语言:javascript
复制
static void send_client_connection_header(http2_session_data *session_data) {
  nghttp2_settings_entry iv[1] = {
      {NGHTTP2_SETTINGS_MAX_CONCURRENT_STREAMS, 100}};
  int rv;

  /* client 24 bytes magic string will be sent by nghttp2 library */
  rv = nghttp2_submit_settings(session_data->session, NGHTTP2_FLAG_NONE, iv,
                               ARRLEN(iv));
  if (rv != 0) {
    errx(1, "Could not submit SETTINGS: %s", nghttp2_strerror(rv));
  }
}

我也不知道我们在http2协议中使用的标记是什么,就像我们有": method“、”:even“等的标记一样,甚至在RFC中也找不到。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-07-08 20:05:00

HTTP/2设置帧不是HTTP头--它是在连接开始时发送的单独消息。因此,不可能像HTTP头一样显示它。

HTTP/2包含许多这样的不可见控制帧:

  • 设置框架来定义如何使用连接。
  • 实现流控制的WINDOW_UPDATE框架
  • 优先框架,以重新排序流(因此,响应)。

...etc。

通常,浏览器和服务器不向用户或甚至在开发人员工具中显示这些控制消息。Chrome允许您使用chrome://net-export URL查看它们,也可以使用网络嗅探工具(如Wireshark )来查看它们。

然而,最简单的方法之一,也是通过检查原始框架来学习HTTP/2的一个非常好的方法,是使用nghttpd工具(它是nghttp2套件的一部分)来创建一个HTTP/2服务器,该服务器可以记录在详细模式下发送给它的任何消息,如下所示:

代码语言:javascript
复制
nghttpd -v 443 server.key server.crt

在我的书中,我将更深入地讨论如何做到这一点,您可以在“:https://livebook.manning.com/#!/book/http2-in-action/chapter-4/176”中免费在线预览5分钟。

我应该说的一件事是,当通过非加密的HTTP/1.1连接(而不是HTTPS),然后升级到HTTP/2时,设置将以HTTP报头(称为HTTP2 2-设置)发送,但这是一个特例,在发送消息时是HTTP/1.1消息。此外,浏览器只支持HTTPS (有充分的理由)上的HTTP/2,我看到您也在使用HTTPS。因此,我会忽略这一点,只是为了完整地提及它。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56940660

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档