问题标签 [http-1.0]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
7 回答
245026 浏览

http - HTTP 1.0 与 1.1

有人可以简要介绍一下 HTTP 1.0 和 HTTP 1.1 之间的区别吗?我在这两个 RFC 上都花了一些时间,但无法找出它们之间的很多区别。维基百科是这样说的:

HTTP/1.1 (1997-1999)

当前版本; 默认情况下启用持久连接,并且可以很好地与代理配合使用。还支持请求管道,允许同时发送多个请求,允许服务器为工作负载做好准备,并可能更快地将请求的资源传输到客户端。

但这对我来说意义不大。我意识到这是一个有点复杂的主题,所以我不期待一个完整的答案,但是有人可以给我简要概述一下较低级别的差异吗?
我的意思是我正在寻找实现 HTTP 服务器或应用程序所需的信息。我主要是在寻找正确的方向,以便我可以自己解决。

0 投票
1 回答
4740 浏览

php - 如何在使用 PHP 和 Apache 的请求中找出 HTTP 的版本

我需要在我的 PHP 脚本中确定 HTTP 请求是 HTTP/1.0 还是 HTTP/1.1 请求,该脚本在 Apache 下运行。有没有办法查询这些信息?

0 投票
2 回答
2271 浏览

http - 使用 HTTP 1.0 是不好的做法吗?

我正在实现一个用于与 Web 服务通信的基本 http 客户端,我想知道我应该使用 http 1.0 还是 1.1。数据部分将由二进制数据组成,远程服务器将始终由我控制(运行 IIS7.5)。中间的防火墙/代理不是我控制的,即。如果使用了错误的 http 版本,则不能停止数据包。

我一直在阅读http 1.0 和 1.1 之间的区别,在我看来,http 1.0 支持我需要的一切。

如果我选择 http 1.0 而不是 1.1,我会遇到问题吗?或者我可以假设一切都会一样好?

让我想知道的是,如果我通过原始套接字连接到 IIS7.5 并发送一个 http 1.0 获取请求,那么响应始终是 http 1.1。

0 投票
1 回答
23148 浏览

http - 为什么 Connection: keep-alive 仍然在 http 标头中指定(不是已弃用)?

根据“HTTP:权威指南”,使用

指定持久连接在 HTTP/1.1 中已弃用,因为 HTTP/1.1 指定默认连接是持久的,必须通过发送手动关闭


因此,我的简单假设是“连接:保持活动”不应该再使用了。然而,它似乎仍然活得很好。例如,在以下查询中返回 keep-alive:

我的问题是:为什么仍然在 HTTP 标头中指定 Connection: keep-alive?

一个必然的问题是:截至 2011 年,是否仍有(客户端、服务器、代理等)仍然只使用 HTTP/1.0 及其变体,或者大多数此类实体在 HTTP/1.1 上?

以下是我的工作假设:

1) HTTP/1.0 不再使用,b/c 那是“很多年前”

2)鉴于(1),不应该再使用keep-alive,但这纯粹出于退化的原因(也就是说,某些技术没有费心将其删除,或者将其保留为巫毒代码等)

如果 (1) 不正确,并且 HTTP/1.0 仍在使用中,那么尽管有关于 HTTP 1.0-1.1 互操作的后续问题,但继续使用 keep-alive 似乎是合理的。

提前感谢您分享的任何见解!

0 投票
1 回答
2076 浏览

asp.net - 如何在 ASP.NET 中实现 HTTP 1.0 / 1.1

我想知道在 ASP.NET 中实现以下内容的最佳方法。我从来没有使用过这些指令,所以如果你能给我一个示例代码,那将非常有帮助。

  1. HTTP/1.0 Pragma 标头
  2. HTTP/1.1 缓存 - 控制标头
  3. 回溯到期标题
0 投票
1 回答
1165 浏览

apache - IE 接收某些文件的 HTTP 1.0 响应

我已经包含了一个音频和视频播放器(带有 Flash 后备的 html5),它适用于除 IE 之外的所有浏览器。

在寻找问题时,我发现服务器发送“HTTP/1.0 200 OK”和“Connection:close”标头(并且没有 Content-Length),但仅在 IE 中且仅针对某些文件(包括 .swf、.mp3 和.mp4)。

我已将以下内容添加到 .htaccess 以禁用这些文件的 gzip:

我对 apache 配置没有经验,也不知道为什么应该为某些请求使用不同的 http 版本。

以下是发送标头:

和响应头:

更新:我刚刚发现初始页面请求(PHP,文本/html)响应也是 HTTP/1.0,但不是所有后续的 ajax 请求。

0 投票
3 回答
5915 浏览

http - 使用 Node.JS 提供 HTTP/1.0 响应(内容长度未知,分块传输编码)

问题

我正在通过 Node.JS 提供长度未知的资源。因此,Content-Length无法设置标题。对于 HTTP 1.1,要求对这种性质的资源使用分块编码。Node.JS 知道这一点,并自行使用分块传输编码发送我的数据,并带有以下标头:

对于表现良好的客户来说,这一切都很好。 但是,我必须支持一些表现不佳的客户端(即 Android 2.2 和更早版本)。 这些客户端不正确支持分块传输编码。

修复尝试 #1

我最初的想法是将编码设置为none

这会禁用 Node.JS 的自动分块编码并保持与大多数客户端的兼容性。但是,现在我已经破坏了 Android 2.3+ 客户端,因为当他们看到这样一个虚假的传输编码标头时,他们只会咳嗽和窒息。

修复尝试 #2(我需要帮助的地方)

当我使用 发出请求时HTTP/1.0,服务器会正​​确返回没有分块编码的响应:

这解决了我的问题,并允许我为所有麻烦的客户提供服务。我不必为 发送虚假标头Transfer-Encoding,也不必指定内容的长度。

如何强制 Node.JS 的 HTTP 服务器始终以 HTTP/1.0 模式提供服务?

0 投票
1 回答
3346 浏览

sockets - 如何通过 net.socket 或 http.request 创建 HTTP-1.0 请求?

我想通过 net.socket 或 http.request 创建一个 HTTP-1.0 请求,但是这段代码有问题:

我得到同样的错误:

欢迎您的帮助。

0 投票
1 回答
142 浏览

http - 等效的 HTTP 查询得到不同的响应

GET http://d9.c4.b1.a0.top.list.ru/ HTTP/1.0\r\nHost: d9.c4.b1.a0.top.list.ru\r\n\r\n

回复:


GET / HTTP/1.0\r\nHost: d9.c4.b1.a0.top.list.ru\r\n\r\n

回复:

这些查询有什么区别?

PS 查询是使用telnet.

0 投票
1 回答
645 浏览

tomcat7 - Tomcat 在不运行 servlet 的情况下返回 400

我的设备有 UBlox(硬件组件)来发送 POST HTTP/1.0 请求。

我在 Tomcat 中收到的标头如下:

请求正文实际上是二进制数据。Tomcat 只是向客户端返回 400,甚至没有运行只打印标题、正文等的 servlet。

标题似乎没有问题。我觉得应该是数据有问题。但是,为什么 Tomcat 返回 400 并且不将控制权传递给我的 servlet?我该如何调试呢?