标签: http2

.NET上的HTTP/2(HTTP2或SPDY)

最近有很多关于HTTP/2标准的消息,与谷歌的SPDY非常相似.

似乎大多数现代浏览器都支持最终的HTTP/2草案所提供的大部分功能(例如,请参见此处).

但是,从使用ASP.NET和IIS的服务器端编码的角度来看,很难从Microsoft找到有关如何在.NET框架中使用此标准的信息,特别是在ASP.NET中(参见此处).

在目前使用.NET Framework 4或更高版本的解决方案中,有哪些选项可用于合并通过HTTP/2提供的技术?

此外,有没有人从微软发现有关System.Net 命名空间和类是否会更新的消息?

对不起基本的问题格式 - 我是网络开发的新手,只是想确保我跟上新兴技术.

.net c# asp.net http http2

34
推荐指数
1
解决办法
2万
查看次数

为什么捆绑优化不再是HTTP/2中的问题

我读了捆绑systemjs文档的部分内容,在HTTP/2中不再需要捆绑优化:

在HTTP/2上,这种方法可能更为可取,因为它允许在浏览器中单独缓存文件,这意味着不再需要对包进行优化.

我的问题:

  1. 这意味着我们在使用HTTP/2时不需要考虑捆绑脚本或其他资源?
  2. HTTP/2中有什么功能可以启用此功能?

bundling-and-minification http2

34
推荐指数
4
解决办法
5510
查看次数

使用HTTP/2的REST API

几个月前,HTTP/2已发布为RFC7540.这将如何影响在HTTP/1.1上构建的现有REST API

根据维基百科,HTTP/2添加了新功能.我们如何利用这些新功能?

随意改善这个问题.

谢谢.

api rest http http2

30
推荐指数
2
解决办法
1万
查看次数

当资源在缓存中时,浏览器是否取消服务器推送?

HTTP/2规范指示如果客户端取消它,则不会推送在PUSH_PROMISE帧中标识的任何资源.

当浏览器检测到缓存中已存在的资源时,它应取消对此资源的推送.但是,我没有看到浏览器如何检测它.框架是否提供其他信息,如etag或上次修改,以允许浏览器检测是否必须驱逐任何缓存条目或是否可以取消推送?

如果可能,可以节省一些带宽.但是,似乎服务器推送会破坏任何客户端缓存优化.

server-push http2

28
推荐指数
2
解决办法
4610
查看次数

使用Webpack和HTTP/2有什么价值

我正在开始一个新项目,我正在尝试前进思考它.我过去曾使用过Browserify.对于我的新项目,我想使用Webpack,Rollup或SystemJS.到目前为止,Webpack看起来是最成熟的,拥有大量令人敬畏的功能.

不过,我担心Webpack在采用HTTP/2的一两年内会变得无关紧要.所以我想知道,Webpack为通过HTTP/2提供服务的网站提供了什么价值?我不是在寻找一个意见,而是一个关于使用Webpack和HTTP/2的好处的事实解释.如果没有任何好处或很少的好处,这也将有助于我做出决定.

webpack http2

27
推荐指数
1
解决办法
4283
查看次数

使用fetch时如何退出HTTP/2服务器推送?

我正在使用新的fetch API在Javascript中编写一个基本应用程序.以下是代码相关部分的基本示例:

function foo(url) {
  const options = {};
  options.credentials = 'omit';
  options.method = 'get';
  options.headers = {'Accept': 'text/html'};
  options.mode = 'cors';
  options.cache = 'default';
  options.redirect = 'follow';
  options.referrer = 'no-referrer';
  options.referrerPolicy = 'no-referrer';
  return fetch(url, options);
}
Run Code Online (Sandbox Code Playgroud)

在进行获取请求时,我偶尔会在控制台中看到如下所示的错误:

拒绝加载脚本'<url>',因为它违反了以下内容安全策略指令...

在阅读并了解HTTP/2之后,看起来会出现此消息,因为响应正在推回预加载的脚本.使用devtools,我可以在响应中看到以下标题:

链接:<路径到脚本>; 相对=预载荷; 为=脚本

以下是我的Chrome扩展程序manifest.json文件的相关部分:

{
  "content_security_policy": "script-src 'self'; object-src 'self'"
}
Run Code Online (Sandbox Code Playgroud)

以下是Chrome的manifest.json格式的文档,以及内容安全策略如何应用于扩展程序提取的内容:https://developer.chrome.com/extensions/contentSecurityPolicy

我做了一些测试,并且能够确定在获取期间发生此错误消息,而不是在解析响应文本时.没有问题将脚本元素加载到实时DOM中,这一切都发生在获取时.

在我的研究中我无法找到的是如何避免这种行为.看起来急于支持这个伟大的新功能,制作HTTP/2和fetch的人没有考虑我没有获取远程页面以便显示它或其任何相关资源(如css)的用例/图像/脚本.我(应用程序)以后不会使用任何相关资源; 只有资源本身的内容.

在我的使用案例中,这种推送(1)完全浪费了资源,并且(2)现在导致一个非常恼人和压力诱导的消息偶尔出现在控制台中.

话虽如此,这是我希望得到一些帮助的问题:有没有办法向浏览器发信号,使用清单或脚本,我对HTTP/2推送不感兴趣?是否有我可以为获取请求设置的标头告诉Web服务器不响应推送?我可以在我的应用程序清单中使用CSP设置,以某种方式触发不要推送我的响应吗?

我查看了https://w3c.github.io/preload/第3.3节,它没有多大帮助.我看到我可以发送标题Link: </dont/want/to/push/this>; rel=preload; as=script; nopush.问题是我还不知道响应中会有哪些链接头,我不确定fetch是否允许在初始请求中设置链接头.我想知道我是否可以发送某些类型的请求,可以在响应中看到链接头但是避免它们,然后发送追加所有相应nopush头的后续请求?

这是一个简单的测试用例来重现这个问题:

  1. 获取最新或近乎最新的chrome的开发版本
  2. 创建扩展文件夹
  3. 使用类似的CSP创建清单
  4. 加载扩展为解压缩到chrome中
  5. 在devtools中打开扩展的后台页面
  6. 在控制台类型获取(' https://www.yahoo.com ').
  7. 检查控制台中显示的结果错误消息: …

javascript google-chrome-extension http2 fetch-api

25
推荐指数
1
解决办法
812
查看次数

HTTP 2将支持服务器推送,这是什么意思?

我已经阅读了很多关于HTTP 2的内容(它还在开发中),所以我也听说过服务器推送功能,但我的头脑,这还不清楚.

此服务器推送功能是否意味着服务器能够在没有后者发出请求的情况下向客户端发送响应?就像一个vanilla TCP连接?或者我错过了这一点?

server-push http2

24
推荐指数
1
解决办法
1万
查看次数

HTTP/1.1流水线和HTTP/2多路复用有什么区别?

是因为它需要按照请求的顺序对客户端做出响应,导致HTTP 1.1中的行头阻塞问题?

如果每个请求花费的时间相等,那么就不会有行头阻塞和HTTP 1.1流水线操作,并且会执行与HTTP/2多路复用相同的操作吗?

(假设HTTP/2请求中没有请求优先级,并忽略HTTP/2的其他更改,例如头压缩,二进制等)

http pipelining multiplexing http2

24
推荐指数
2
解决办法
7815
查看次数

是否使用HTTP/2引发了每主机连接限制?

浏览器对于并行XHR的数量(现在约为6)具有每主机限制.

此限制是否适用于多路复用HTTP/2连接?

browser xmlhttprequest restriction http2

23
推荐指数
1
解决办法
7176
查看次数

使用JAX-RS客户端支持HTTP/1.1和HTTP/2

我想为JAX-RS客户端实现支持HTTP/1.1和HTTP/2的JAX-RS客户端.

如果服务器支持带有HTTP/2的ALPN,则使用HTTP/2,如果服务器不提供任何信息,则使用HTTP/1.1.

我已经阅读了一些关于ALPN的文章,它似乎是可能的,但我没有找到任何支持这些协议的东西.我没有把这些插在一起.

我目前正在使用JerseyJetty HTTP/1.1传输连接器HTTP/2传输连接器自定义实现.

java http jetty jersey http2

23
推荐指数
1
解决办法
1918
查看次数