Q1)
如果您参考RFC 2616 Section 14,您会看到 Last-Modified 标头的定义是:
Last-Modified = "Last-Modified" ":" HTTP-日期
HTTP-date在同一 RFC 第 3 节中指定。
Sun, 06 Nov 1994 08:49:37 GMT ; RFC 822, updated by RFC 1123
Sunday, 06-Nov-94 08:49:37 GMT ; RFC 850, obsoleted by RFC 1036
Sun Nov 6 08:49:37 1994 ; ANSI C's asctime() format
第一种格式是首选的 Internet 标准,它代表 RFC 1123 [8](对 RFC 822 [9] 的更新)定义的固定长度子集。第二种格式是常用的,但基于过时的 RFC 850 [12] 日期格式并且缺少四位数的年份。解析日期值的 HTTP/1.1 客户端和服务器必须接受所有三种格式(为了与 HTTP/1.0 兼容),尽管它们必须只生成 RFC 1123 格式来表示标头字段中的 HTTP 日期值
由于您的标题中的日期与其中的第一个匹配,只有时区看起来不同,您可以检查RFC 1123以查看它是否合法。关于时区,这说明了。
使用数字时区指示符的趋势很强烈,实现应该使用数字时区而不是时区名称。但是,所有实现都必须接受任何一种表示法。如果使用时区名称,它们必须完全按照 RFC-822 中的定义。
从RFC 822 第 5 节我们可以看到区域的定义:
zone = "UT" / "GMT" ; Universal Time
; North American : UT
/ "EST" / "EDT" ; Eastern: - 5/ - 4
/ "CST" / "CDT" ; Central: - 6/ - 5
/ "MST" / "MDT" ; Mountain: - 7/ - 6
/ "PST" / "PDT" ; Pacific: - 8/ - 7
/ 1ALPHA ; Military: Z = UT;
; A:-1; (J not used)
; M:-12; N:+1; Y:+12
/ ( ("+" / "-") 4DIGIT ) ; Local differential
; hours+min. (HHMM)
由于这里没有列出头部中的时区,因此我们可以断定它是无效的,并且服务器实际上违反了协议,因此异常看起来是合理的。
Q2)
恐怕我不知道您如何处理它,除了以将标头修复为有效的方式放置代理,或者要求编写/维护 Mongoose 服务器的人修复它(或自己修复它并提交一个补丁,因为它是一个开源项目)。
Q3)
我很少(如果有的话)看到 .NET 在调用时遇到问题的 Web 服务器,所以我不相信这种类型的问题在互联网上普遍存在。