- xml - AJAX/Jquery XML 解析
- 具有多重继承的 XML 模式
- .net - 枚举序列化 Json 与 XML
- XML 简单类型、简单内容、复杂类型、复杂内容
我正在尝试使用 HTTP/2 扩展服务器,该服务器已经支持 HTTP/1.1 和 TLS v1.2。我在 Go 中编写它,我在其中定义了这样的 tls 配置 -
tlsConfig := &tls.Config{
Certificates: []tls.Certificate{cert},
ServerName: "mysrvr",
NextProtos: []string{"h2", "http/1.1", "http/1.0"},
Time: time.Now,
Rand: rand.Reader,
}
很明显,我使用了“h2”字符串来设置 ALPN 握手。
现在当我通过 curl 发出请求时,我收到了这个请求 -
$ curl -v https://127.0.0.1:8000 -k --http2
当我解析请求时,它显示首先发送的是 PRI 方法,而不是 GET -
HTTP/2.0
PRI
我从https://www.rfc-editor.org/rfc/rfc7540#page-78 得到一些关于PRI 方法的想法|其中它说了以下内容-
This method is never used by an actual client.
This method will appear to be used when an HTTP/1.1 server or
intermediary attempts to parse an HTTP/2 connection preface.
我现在的问题是,为什么发送 PRI 请求,而服务器显然支持 HTTP/2?我是否需要根据 HTTP/2 规范解析它并使用空的 SETTINGS 框架进行响应,或者 Go http2 运行时是否应该处理它?</p>
我正在使用 http.ReadRequest
来解析客户端请求,但这似乎不适用于 HTTP/2 请求,即使我忽略了 PRI 请求(如下所示)。
最佳答案
HTTP/2 客户端应该发送的第一条消息是这个 PRI 消息。来自HTTP/2 specification :
In HTTP/2, each endpoint is required to send a connection preface as a final confirmation of the protocol in use and to establish the initial settings for the HTTP/2 connection. The client and server each send a different connection preface.
The client connection preface starts with a sequence of 24 octets, which in hex notation is:
0x505249202a20485454502f322e300d0a0d0a534d0d0a0d0a
That is, the connection preface starts with the string PRI * HTTP/2.0\r\n\r\nSM\r\n\r\n). This sequence MUST be followed by a SETTINGS frame (Section 6.5), which MAY be empty.
...
Note: The client connection preface is selected so that a large proportion of HTTP/1.1 or HTTP/1.0 servers and intermediaries do not attempt to process further frames.
这条消息的要点是它是一个类似 HTTP/1 的虚假消息,因此任何不支持 HTTP/2 的服务器都应该以错误响应。
任何 HTTP/2 服务器都应该期待这个消息被发送,然后应该忽略它,继续使用 HTTP/2。
事实上,如果这条消息没有被发送,那么服务器应该将其视为一个错误并且不会继续:
Clients and servers MUST treat an invalid connection preface as a connection error (Section 5.4.1) of type PROTOCOL_ERROR. A GOAWAY frame (Section 6.8) MAY be omitted in this case, since an invalid preface indicates that the peer is not using HTTP/2.
关于http - http2 实现中的 PRI 方法导致问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50434269/
调用pry 和调用binding.pry 有什么区别?例如: require 'pry' class Bookshop def initialize(book) @books = []
如果遇到异常(例如,如果您只是在脚本末尾放置一个 undefined variable “x”),Pry 会进入交互模式。 (此外,如果在脚本本身内您需要'pry' 并将binding.pry 放在您
我正在尝试自定义我的 Pry(使用 Pry 有一段时间了,但这是我第一次尝试创建命令。)我想创建一个自定义命令,它将获取最后五十个项目根据我的历史,我正在构建它: Pry::Commands.bloc
pry gem 和 pry-rails gem 有什么区别(在实现方面)? 最佳答案 比较它们的实现没有意义,因为它们是两个不同的东西:一个 IRb 替代品和一个使前者成为 Rails 控制台的插件。
我正在使用 pry-byebug 并且想这样写: 3.times do |i| next if i == 2 p i end 但这失败并出现错误: [1] pry(main)* next
每当我在命令行中输入 pry 时,它都会打开并显示此错误。 terminal$ pry NameError: uninitialized constant Pry::BondCompl
我正在尝试调试一个简单的 ruby 控制台脚本,但在尝试要求 pry 时出现加载错误: 我正在使用 rbenv 来管理环境。 我使用的是 Ruby 版本:2.3.1. 尝试使用 Pry '~> 0
为什么我会收到此 pry 动错误? [36] pry(main)> s = "pry" Error: Cannot find local context. Did you use `binding.p
当一个在rails-application文件夹中时,为什么不一样 $demo_app> pry -r ./config/environment 来自 $demo_app> pry -r config
我正在将我的应用程序的最新版本上传到 Windows 商店,但我的应用程序抛出错误: Package acceptance validation error: We encountered a fat
需要 pry在我的 RSpec spec_helper.rb运行我的规范给了我一堆警告。我该如何摆脱这些? /Library/Ruby/Gems/2.0.0/gems/pry-0.10.0/lib/p
我有 qt 项目 proj1,它依赖于另一个 (proj2)。 目录树是这样的: common/ `--/pr1/ proj1.pri ma
我是 Elixir 的新手,但玩得很开心! 我来自 Ruby 世界,所以开始寻找类比。并且存在调试工具pry。使用 binding.pry 我可以中断任何 session 。我在 Elixir 中发现
我从理解计算 一书中获得了以下代码。目的是改变 inspect 行为。 class Number >" end def to_s value.to_s end end 当我使用 i
当我在 pry 中使用 Tempfile 类时,我没有使用 require 它。 % pry -f pry(main)> Tempfile Tempfile 但是当在 irb 中时,我必须首先要求
我的工作站: $ uname -a Linux dsktop 3.13.0-77-generic #121-Ubuntu SMP Wed Jan 20 10:50:42 UTC 2016 x86_64
我把 binding.pry 放在我的脚本中, 但是现在当它停在断点处时, 是向我显示该信息。 出乎我的意料,如何解决? 帧数:0/11 From: /Users/me/.rbenv/versions
在 Rails 中使用 Pry,当我在代码中遇到断点时 绑定(bind).pry 我想知道我是怎么到这里的,谁给我打电话,谁给他们打电话等等。但奇怪的是我没有看到那个命令。有人知道吗? 最佳答案 要在
我想使用 IEx.pry 在我的 elixir 代码中一步一步地进行,比如 ruby 中的 byebug 或 Java 中的调试点。我尝试查看此处的文档:https://github.com/el
qmake 的*.pro 和*.pri 配置文件有什么区别? *.pro 文件中应包含哪些内容,*.pri 文件中应包含哪些内容? 最佳答案 它们的目标重用之间有一个主要区别: .pro 这通常称为项
我是一名优秀的程序员,十分优秀!