【问题标题】:HEAD requests fail after switching to HTTP/2切换到 HTTP/2 后 HEAD 请求失败
【发布时间】:2018-04-30 05:13:52
【问题描述】:

在我的虚拟主机切换到 HTTP/2 后,我遇到了一个奇怪的问题。

突然所有对 PHP 页面的 HEAD 请求都会在 Chrome 中导致 ERR_SPDY_PROTOCOL_ERROR。即使文件为空,也会发生这种情况。这似乎只发生在 Chrome 中,但 Postman 和 Lynx 似乎能够很好地发送请求。

一个例子,在Chrome的控制台中输入以下内容(test.php文件为空):

var http = new XMLHttpRequest();
http.open("HEAD", "https://play.asti.ga/api/test.php");
http.send();

返回以下错误: HEAD https://play.asti.ga/api/test.php net::ERR_SPDY_PROTOCOL_ERROR 网络选项卡还显示(failed)。但是,对 test.html 执行相同的请求确实可以正常工作。

我联系了虚拟主机,他们声称他们的配置很好,所以我想知道我能做些什么来解决这个问题。服务器运行于 PHP/7.0.25

【问题讨论】:

  • curl --head https://play.asti.ga/api/test.php 返回 curl: (92) HTTP/2 stream 1 was not closed cleanly: PROTOCOL_ERROR (err 1) -- 这不是来自 PHP。
  • 来自 curl 的详细选项:* Copying HTTP/2 data in stream buffer to connection buffer after upgrade: len=0——也许这与代理从上游主机接收零字节有关。
  • 嗯没关系,GET 请求也有相同的 len=0 消息,但工作正常...
  • 注意,如果您通过 HTTP 请求相同的页面,它可以正常工作。这很清楚地表明问题出在 Web 服务器配置上,而不是您的应用程序上。
  • @AlexHowansky 感谢您的调查。我将再次联系我的虚拟主机(已经来回发送了很多电子邮件),希望他们这次能解决它。

标签: google-chrome network-protocols http2


【解决方案1】:

这确实是一个服务器问题,更具体地说是 SuPHP 与 HTTP/2 结合的问题。

【讨论】:

    猜你喜欢
    • 2019-05-09
    • 1970-01-01
    • 2013-10-10
    • 1970-01-01
    • 2022-12-16
    • 2016-09-07
    • 2014-11-19
    • 1970-01-01
    • 2016-12-17
    相关资源
    最近更新 更多