我真的在网上搜索,我找不到网页浏览器不支持h2c(没有TLS的http / 2)的原因。任何想法,赞赏。
稍微澄清一下 带https的http / 2使用ALPN(这称为h2)。 带http的http / 2不需要ALPN(这叫做h2c),但几乎没有网页浏览器支持它。为什么会这样?
我觉得对于许多资源来说,不需要保密,尽管真实性总是好的(虽然有一些私有实现,但http主体的数字签名并未得到广泛支持)。鉴于不需要保密,那么h2c确实是一件好事。
答案 0 :(得分:36)
有几个技术原因可以解释为什么HTTP / 2通过HTTPS更好更容易处理:
var project = "demo";
Ext.Ajax.request({
url: '/common/services/general/basicOperations/getDataByModelUsingGetMethod',
method: 'GET',
params: {
actionId: 'estimatordata',
dataJson: '{"aspectType":"Painting Estimator"}'
},
success: function(response) {
try {
var response = response.responseText;
var resObj = Ext.decode(response);
for (var i = 0; i < resObj.data.length; i++) {
if (resObj.data[i].refDataNameName == project) {
console.log(JSON.stringify(resObj.data[i]['allGridsData'], null, 4));
}
}
this.lookupReference('selectionsinquiryDetailGrid').getStore().loadData(
arr
);
} catch (e) {
console.log(e);
}
},
failure: function(response) {
},
scope: this
});
之类的往返。并且它不会受到使用纯文本HTTP / 2获得的POST升级问题的影响。Upgrade:
标头,而是回复400个错误。在网络上推动了更多的HTTPS,这些HTTPS由一些较大的Web浏览器开发团队共享和部分工作。如果功能仅以HTTPS实现,那么它就会被视为奖励,因为它们是网站和服务转移到HTTPS的另一个动机。因此,有些团队从未尝试过非常努力(如果有的话)在没有TLS的情况下使HTTP / 2工作。
至少有一家浏览器供应商早期表示有意为通过纯文本HTTP(h2c)完成的用户实施和提供HTTP / 2。由于上面提到的技术障碍,他们最终从未这样做过。