问题标签 [rfc2616]
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.1 响应多个范围
在编写我的 HTTP/1.1 服务器时,我在处理多个范围请求时遇到了困难。
RFC 2616 的第 14.35.1 节引用了一些示例,但并未阐明服务器行为。例如:
我应该返回这个确切的字节序列吗?或者我应该合并所有范围,发送100-400,500-600
?或者在两者之间发送所有,100-600
?
最糟糕的是,在检查Content-Range
响应头(第 14.16 节)时,可能只返回一个范围,所以我想知道服务器如何响应第 14.35.1 节中的示例bytes=0-0,-1
!!!
我的服务器应如何处理此类请求?
ios - 使用 AFNetworking 的 AFHTTPRequestOperation 读取状态行(状态代码和原因短语)
我正在从 iOS 应用程序切换ASIHTTPRequest
到AFNetworking
。
RF2616 (HTTP/1.1)通过“状态代码”和“原因短语”的组合定义了一个“状态行”。有时服务器会在这个“原因短语”中添加一些特定信息,我发现 ASIHTTPRequest 允许我通过以下方式轻松访问它相当方便
我的问题是我找不到任何方法来做到这一点AFHTTPRequestOperation
在操作的完成/失败块中,我可以通过执行以下操作获取状态代码:
但我找不到从哪里得到“原因短语”。
StackOverflow 上的一些答案表明它将位于其中一个条目中,[operation.response allHeaderFields]
但事实并非如此。
对这个问题的回答 << Can I access "Reason Phrase" from the HTTP Status-Line in NSHTTPURLResponse >> 建议更改服务器的行为方式,但这并不总是可用的选项。
任何想法?
http - HTTP 字节范围和多部分/字节范围替代方案?
RFC2616(HTTP/1.1):
不得使用 multipart/byteranges 媒体类型发送对单个范围请求的响应。
对多个范围请求的响应,其结果是单个范围,可以作为带有一个部分的 multipart/byteranges 媒体类型发送。
无法解码多部分/字节范围消息的客户端不得在单个请求中请求多个字节范围。
如果我理解正确,单个请求中的多个范围可以使用 multipart/byteranges 并且客户端必须能够解码它或者根本不应该请求它。
“可能”是否暗示还有可以使用的多部分/字节范围的替代品?有吗?如果是这样,是否有请求它们的标头?
例如,服务器是否可能将所有字节范围连接成一个单独的部分响应?
http-headers - 206 Partial Request - 具有重叠字节的单范围请求
我正在实现一个支持 206 个部分请求的模块。阅读 RFC rfc2616 后,我注意到在接收多范围请求时,不允许重叠范围,例如:“ab,ad”。
我的问题是:
单范围请求和重叠字节会发生什么?
我需要忽略第二个请求中的字节 ab 吗?
或者
我需要覆盖字节吗?
谢谢
api - 代理在什么情况下会删除 HTTP 请求标头?
我正在研究 RESTfully 版本控制 API 的各种方法,其中有三个主要的竞争者。我相信我几乎已经决定使用X-API-Version
. 撇开争论不谈,反对使用该标头和自定义标头的论据之一是您无法控制标头何时由代理服务器操作。我很好奇有哪些现实世界的例子,什么时候发生在整个互联网上,或者什么时候可能在内部网或服务器集群上使用,或者它可能发生在任何其他情况下。
http - http:对客户端的最低内容编码支持?
http 客户端是否必须支持最少的内容编码集?
重述:仅实现 content-encoding:identity 的客户端是否符合标准?
我找不到有关该主题的明确文档。
http - HTTP 服务器应该如何在一秒钟内处理多个更改的 If-Unmodified-Since?
HTTP 规范 (RFC-2616)在第14.28 节中声明 If-Unmodified-Since 标头必须被 HTTP 服务器识别并且它只有一秒的精度。
如果资源每秒更改一次以上,服务器应如何处理此标头?
我的理解是,服务器必须以“412 Precondition Failed”响应任何带有 If-Unmodified-Since 标头的请求,因为它不知道客户端具有哪个版本的状态。或者服务器应该忽略这个问题并假设客户端知道它在做什么?
web-services - 使用 HTTP 状态码时区分基础架构和业务逻辑
我们正在尝试构建一个允许用户测试特定资源是否存在的 REST 接口。假设我们正在销售域名:用户需要确定域名是否可用。
乍一看,HTTP 与响应代码相结合似乎是明智的GET
。200
404
我们遇到的问题是区分我们的查找服务成功服务的请求和其他组件在异常行为下服务的请求。例如:
404
并且200
可以由实际阻止请求的中间代理返回。这可能是由于代理配置错误,甚至是咖啡店 Wifi 等外部基础设施使用了糟糕的基于表单的身份验证。客户端可能正在使用损坏的 URL。这可能通过弃用或(再次)通过错误配置而发生。但是,我们可以通过 对抗前者
301
。
区分已成功满足客户对该请求的意图的响应和通过异常行为提供的响应的当前最佳实践是什么?
通过响应主体隧道响应可以消除该问题,因为我们可以确保这些对于我们的服务是唯一的。但是,似乎不是很 RESTful!
http - Flask:使用数组参数实现 HTTP GET
我正在实现一个包含/feed
请求的 HTTP REST API。该请求返回用户的新闻提要。
该请求带有一些参数,包括userId
、关注者列表startTime
和maxItems
。
在服务器端(Python 和 Flask)实现它的最简单方法是添加一个 JSON 有效负载,我可以从中读取参数。
唉,向GET
请求中添加有效负载不是一个好主意,并且许多客户端库都不支持它。
我的选择:
- 提出
/feed
请求POST
。它很难看,因为POST
不应该用于从服务器请求信息。 /feed
将调用拆分为/updateFollowers
(POST
) 和/feed
(GET
)。这会浪费时间,因为GET
只有在通话之后才能进行POST
通话。
这两种选择似乎都是错误的。是否有任何标准方法可以GET
使用一堆复杂的参数进行类似调用?
http - HTTP 1.1 TE 标头
在阅读 RFC2616 时,我遇到了用于分块编码的 TE 和 Transfer Encoding 标头。我对这些有以下问题:
- 如果 HTTP 服务器因为 TE 标头的存在而拒绝请求,它是否符合 RFC?
- 如果 HTTP 客户端发送带有 TE 标头和 t-codings 和 q 值列表的请求,并且一旦此类 q 值为 1,HTTP 服务器是否必须发送具有该编码的响应数据,例如:TE: deflate;q =0.5 gzip;q=1(这是否要求服务器在 gzip 中压缩实体数据并发送它,或者服务器可以忽略它并以正常方式发送数据?)。
- 如果 HTTP 服务器不支持接收分块数据(我知道它违反 RFC,但这是有意的),那么正确的错误响应代码可能是发送回客户端以便客户端下次不发送 PUT以分块方式请求。
提前感谢您的宝贵意见和回答。