问题标签 [http-1.1]
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.
http - HTTP 1.0 与 1.1
有人可以简要介绍一下 HTTP 1.0 和 HTTP 1.1 之间的区别吗?我在这两个 RFC 上都花了一些时间,但无法找出它们之间的很多区别。维基百科是这样说的:
HTTP/1.1 (1997-1999)
当前版本; 默认情况下启用持久连接,并且可以很好地与代理配合使用。还支持请求管道,允许同时发送多个请求,允许服务器为工作负载做好准备,并可能更快地将请求的资源传输到客户端。
但这对我来说意义不大。我意识到这是一个有点复杂的主题,所以我不期待一个完整的答案,但是有人可以给我简要概述一下较低级别的差异吗?
我的意思是我正在寻找实现 HTTP 服务器或应用程序所需的信息。我主要是在寻找正确的方向,以便我可以自己解决。
http - HTTP 请求+响应的名称
c# - Web 服务 .NET Framework 问题
我们正在从 C# (VS.Net 2003) 应用程序连接一个 web 服务 (java)。运行在 HTTP 1.0 协议上的 Web 服务。另一方面,VS.Net 2003 试图使用 HTTP 1.1 协议。因此对象将变为空值。
例如,我们得到的字符串 [5] 对象是正确的,但数组的项目是空值。
我们必须将 HTTP 协议升级到 1.0。2005年和2008年没问题。
我们如何在 VS 2003 框架 1.1 中做到这一点?
php - PHP 使用 session_cache_limiter() 和 session_cache_expire() 或多个 header()
我希望我的 PHP 页面被缓存。为了允许缓存我使用:
由于我只对这些缓存头使用会话,我是否应该删除这 3 行并将它们替换为(我从不使用 $_SESSION):
php - HTTP if-none-match 和 if-modified-since 以及 PHP 中的 304 说明
我的问题是关于当我从代理/客户端请求同时收到if-none-match 和 if-modified-since时如何回复 HTTP 304“未修改” 。
从 RFC 2616 第 14.26 节(http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.26):
如果没有一个实体标签匹配,那么服务器可以执行请求的方法,就好像 If-None-Match 头域不存在一样,但也必须忽略请求中的任何 If-Modified-Since 头域。也就是说,如果没有实体标签匹配,则服务器不得返回 304(未修改)响应。
我不确定是否理解此声明...
- PHP 中的“如果没有一个实体标签匹配”他们说的
$_SERVER['HTTP_IF_NONE_MATCH']
是我之前发送的我的 ETags 吗? - 如果我正确理解了这句话,只要列出的 ETag
$_SERVER['HTTP_IF_NONE_MATCH']
与我的 ETag 都不匹配,我就会停止所有验证并正常提供页面。
任何人都可以用伪代码(或 PHP 代码)翻译这个 RFC 部分和/或回答我上面的 2 点吗?
编辑 1: 感谢 St.Woland 的回答。您(或其他任何人)能否告诉我我在这 6 点上是否正确:
的格式
$_SERVER['HTTP_IF_NONE_MATCH']
可以是:a)If-None-Match: "xyzzy", "r2d2xxxx", "c3piozzzz"
b) If-None-Match: "xyzzy"
并不是:
c) If-None-Match: "xyzzy, r2d2xxxx, c3piozzzz"
如果
!array_key_exists('HTTP_IF_NONE_MATCH', $_SERVER)
,则 anyTagMatched() 返回 NULL。只要 ETag
$_SERVER['HTTP_IF_NONE_MATCH']
与我的文档 ETag 匹配,anyTagMatched() 就会返回 TRUE。如果没有任何 Etag
$_SERVER['HTTP_IF_NONE_MATCH']
与我的文档 ETag 匹配,则anyTagMatched()
返回 FALSE。如果
$_SERVER['HTTP_IF_MODIFIED_SINCE']
设置并匹配我的文档“最后修改”日期isExpired()
返回 FALSE,否则返回 TRUE。一旦
anyTagMatched()
返回 TRUE,我就会发出 304。如果 anyTagMatched() 返回 NULL 并isExpired()
返回 FALSE,我可以发出 304。在任何其他情况下,我都会照常提供我的页面(我还发出最新的 Last-Modified 和ETag 标头)。
http - HTTP 标头 If-None-Match: * 是什么意思?
以下 HTTP 1.1 标头是什么意思?
如果无匹配:*
我在使用强或弱 ETag 甚至 ETag 列表时理解它,但我不明白它在使用星号 (*) 时的用途。
编辑:如果有一些伪代码(PHP 代码也很好)来显示如何/如何回答“If-None-Match:*”,那就太好了。
http - HTTP If-None-Match vs. If-Match
I'm currently building up a PHP script that will answer HTTP "304 Not Modified" when required.
(See question #2086712 for what I do so far).
Currently I answer to the following:
- If-Modified-Since
- If-None-Match
But I found out that 3 more headers can trigger a "conditional GET" (See http://www.w3.org/Protocols/rfc2616/rfc2616-sec9.html#sec9.3):
- If-Match
- If-Unmodified-Since
- If-Range
The last 2 seems irrevelent to my caching system (they seem to be used when resuming "big" downloads) but I haven't found if "If-Match" could be of use in my system.
Does "If-Match" is used in proxies or Web browser for "regular" page content? How "If-Match" is different than "If-None-Match"?
Should I support those 3 or just some of them? Any help welcome!
php - 支持 HTTP 100 继续使用 PHP
我正在开发一个 PHP webapp,它接受来自特定客户端的大型 POST 文件上传,并希望在使用 HTTP/1.1 100 上传文件之前接受或拒绝这些上传(基于各种标头和其他因素,而不仅仅是大小)继续。
HTTP/1.1 规范 8.2.3的一些快速背景知识:
100(继续)状态(参见第 10.1.1 节)的目的是允许正在发送带有请求正文的请求消息的客户端确定源服务器是否愿意接受请求(基于请求标头)在客户端发送请求正文之前。在某些情况下,如果服务器在不查看正文的情况下拒绝消息,则客户端发送正文可能不合适或效率极低。
问题是Apache从客户端看到Expect:100-continue,返回100 Continue并在PHP开始处理之前接受所有文件上传......但是我需要PHP在Expect:100-continue之后立即开始处理。我不确定这是否可能,所以我有两个问题:
- 是否可以让 PHP 在 Expect: 100-continue 之后立即开始处理?
- 如果没有,有什么好的选择?
我目前正在考虑通过指定客户端首先发送与 POST 具有相同标头的 HEAD 请求来模拟 100 continue。然后,webapp 可以返回响应以继续 POST 或错误代码。欢迎其他建议!
http - HTTP/1.1 的开源机器可读语法?
是否有用于 HTTP/1.1 请求和响应的开源机器可读语法?具体来说,我正在寻找一种流行的解析器生成器(例如,ANTLR、CUP、BNFC 等)接受的语法。
php - 如何在使用 PHP 和 Apache 的请求中找出 HTTP 的版本
我需要在我的 PHP 脚本中确定 HTTP 请求是 HTTP/1.0 还是 HTTP/1.1 请求,该脚本在 Apache 下运行。有没有办法查询这些信息?