当我在 curl 中使用各种调用时,我经常会看到这种情况。
我不确定这是否是导致我的某些返回结果出现 400 错误的根本原因,但作为新手,我只是非常好奇。
答案1
可能是服务器不支持阿尔及利亚国家铁路网络。例如,Debian 8.0(带有 OpenSSL 1.0.1k)仅支持 NPN2。但是 Ubuntu 16.04 附带 OpenSSL 1.0.2g,它支持 ALPN,所以我不确定这是不是问题所在。
我认为它不会导致 HTTP 400 错误,除非服务器强制执行 HTTP2。
答案2
从克雷格·希克斯非常棒回答到 ”“服务器证书验证正常”但“ALPN,服务器不同意协议”“:
这句话
* ALPN, server did not agree to a protocol
含义仍是一个谜,但我猜它要么意味着 (1) 不同意 HTTP/2,要么不太可能 (2) 客户端询问是否在未经授权的情况下继续并被拒绝,然后使用授权。对于诊断输出来说,这真是一个糟糕的语言选择。Google 为该文字表达式返回了数千个结果。
我做了一个 HTTP2 测试(tools.keycdn.com/http2-test用于布赖恩的回答回答类似的问题)在一个返回相同行的网站上,得到了以下结果:
HTTP/2 protocol is not supported.
ALPN extension is not supported.
也就是说,这条ALPN, server did not agree to a protocol
线可能只是因为终端不支持 ALPN 而出现(应用层协议协商 (ALPN) 是用于应用层协议协商的传输层安全性 (TLS) 扩展)。