问题标签 [spdy]

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.

0 投票
1 回答
261 浏览

python - 使用 zlib+dictionary 压缩/解压缩 spdy 名称/值块时出错

我试图编写一个 spdy 代理服务器,但在压缩/解压缩 spdy 名称/值块时遇到问题。

我正在使用 python 3.3 zlib 库来压缩/解压缩字典。

从chrome 31接收spdy帧时,帧大部分时间都可以解析,但是有些name/value块无法正确解压。

我有3个测试用例:

我是 python3+zlib 的新手(在这个项目之前使用 python 2.7)和 spdy。我真的很感谢你的帮助。

0 投票
1 回答
148 浏览

python - spdy3 的名称/值块有时无法用 python 解压缩

我正在为 chrome 构建一个 spdy 代理服务器。

当从 chrome 发送代理请求时,通常我会收到 3 帧:

  1. 一个 SETTINGS 框架(正确解析)
  2. https' CONNECT 请求的 SYN_STREAM 帧(也正确解析)
  3. 另一个无法解压缩名称/值块的 SYN_STREAM 帧(解压缩数据时出现错误 -3:标头检查不正确)

最后一帧很奇怪,因为我可以解析第一个 SYN_STREAM 也有名称/值块。

我已经尝试解决这个问题整整 2 天,甚至将 spdy 版本从 2 切换到 3,但仍然无法解决。

这是我的解压缩函数(Python 3.3):

这是日志的完整示例:

让我稍微解释一下:

(1) 代理从套接字接收到原始字节,其中包含 3 个 spdy 帧

(2) 从 (1) 的字节中解析出一个 SETTINGS 帧

(3) 还解析了一个 SYN_STREAM 帧

(4) 继续解析时,遇到了另一个SYN_STREAM

不知何故,名称/值块部分无法解压缩

6-8个字节告诉了剩余数据的长度(长度:'\x00\x00'=41),尾部是'\x00\x00\xff\xff',所以我应该已经正确拆分了帧。

在“长度字节”之后,压缩名称/值块之前还有 10 个其他字节。

(5) 捕获到错误,列出了故障帧的字节,实际压缩的名称/值块的字节为:

(6/7) chrome有一阵子没回复了,所以它发了一个RST_STREAM帧取消了前面(3)的SYN_STREAM请求(这样OK)

解压功能有什么问题

或者有谁知道如何解压缩第二个 SYN_STREAM 的 NV 块

谢谢!

编辑:

我添加了一个完整的日志示例。

感谢@Mark,我看到 .flush() 没有被调用,但主要错误是'不正确的标题')

0 投票
1 回答
142 浏览

python - 如何使 spydlay 模块像 httplib/http.client 一样工作?

我必须测试基于 Jetty 的服务器。该服务器可以使用自己的协议、HTTP、HTTPS,最后它开始支持 SPDY。我有一些基于httplib/的压力测试http.client——每个线程都以相似的 URL 开头(查询字符串中的一些数据是可变的),将执行时间添加到全局变量,并且每隔几秒钟显示一些统计信息。代码如下:

使用本机协议的客户端共享httplibAPI,因此connection可能是本机的,HTTPConnection或者HTTPSConnection.

现在我想使用spdylay模块添加 SPDY 测试。但是它的界面是不透明的,我不知道如何将它的不透明变成类似于httplib界面的东西。我已经根据示例制作了测试客户端,但是虽然第二个参数spdylay.urlfetch()是类名而不是对象,但我不知道如何在我的测试中使用它。我已经on_close()在我的类的方法中添加了测试 extends spdylay.BaseSPDYStreamHandler,但它与其他测试不兼容。如果是实例,我会在spdylay.urlfetch()通话之外使用它。

如何spydlay在基于httplib接口的代码中使用?

0 投票
0 回答
139 浏览

google-app-engine - 我可以在 HTTPS AppEngine 请求上禁用 SPDY 吗?

如果我在 App Engine 上使用 HTTPS,Google 服务器会使用 SPDY 自动将其提供给兼容的浏览器。有没有办法覆盖这个(任何设置或特殊标题)?我想在使用 HTTPS 时使用旧的 HTTP/1.1

0 投票
1 回答
192 浏览

security - 执行 HTTPS | 经验?

我在问自己,是否可以通过 301 将每个 HTTP 请求重定向到其 HTTPS 对应项来强制执行 HTTPS 而不是普通 HTTP。

是否存在向后兼容性问题(IE,我在看着你)或任何其他缺点?搜索引擎如何处理这个问题?你已经有这方面的经验了吗?你有什么意见?

Google 自己也强制执行 HTTPS,但并非总是如此。如果您发送的是 IE6/7 User-Agent 标头,您将不会被重定向。如果我的用户愿意,我应该允许他们使用 HTTP 吗?

可以理解的是,电子前沿基金会建议用户始终使用 HTTPS。我可以为我的用户做出这个决定并强制执行 HTTPS 吗?有理由根本不使用 HTTP 吗?

0 投票
3 回答
802 浏览

android - 如何在 android webview 上确认 SPDY 的行为

大家好。

我正在调查 SPDY 在 android webview 上的行为。那么,你能告诉我如何确认我的 webview 是否在说 SPDY 吗?我已经构建了一个定制的 ROM,应用了以下补丁。

https://codereview.chromium.org/106903017/diff/20001/android_webview/browser/net/aw_url_request_context_getter.cc

此致,

0 投票
3 回答
1963 浏览

javascript - 使用 HTTP2/SPDY 时我应该缩小和连接 javascript 和 CSS 吗?

鉴于 HTTP2(和 SPDY)中连接重用和多路复用的优势以及 gzip 压缩的可用性,在构建过程中添加缩小和连接步骤的努力是否合理?

0 投票
0 回答
128 浏览

http - 您如何提供 SPDY HTTP 2.0 和 HTTP 1.1 之间的最佳兼容性?

HTTP 2.0 是建议的 SPDY 标准版本,如何在协议之间获得与浏览器的最大兼容性?两者都将回退到 HTTP 1.1,但是是否有只支持 SPDY 但不支持 HTTP 2.0 的浏览器,反之亦然?如果 SPDY 支持不可用但 HTTP 2.0 支持可用,SPDY 是否会回退到 HTTP 2.0?

0 投票
0 回答
3005 浏览

java - 使用带有 HTTP 2.0 的 Netty

我想比较 SPDY 与 HTTP 2(最好是最近的草案)的性能。我用谷歌搜索了一下,发现 scalantra 有一个 Netty 3.x 的扩展(https://github.com/scalatra/netty-extension/find/master),但是如果我更喜欢使用新版本的 Netty可能的。有人知道适用于 Netty 4.x 或 5.x 的类似扩展吗?

0 投票
1 回答
338 浏览

nginx - 为什么 spdy 在 nginx 1.5.10 中不起作用?

我已经用 centos 6.5 上的 spdy 模块编译了 nginx 1.5.10,它运行没有问题,据我所知,spdy 显然没有被使用。

我在 nginx.conf 中的 listen 指令中添加了“spdy”选项并重新启动了服务器,但是各种 spdy 检查方法,例如可用的 firefox 插件和网站:https : //spdycheck.org/表明我的网站上没有使用 spdy。

nginx.conf 中的行是:

听 443 ssl spdy default_server;

我看到了这个帖子:如何通过 Nginx 设置 SPDY 协议?

并查看我是否需要更改 /etc/init.d/nginx 中的 DAEMON 或 PATH 行 - 但在我的版本中,这些行根本不存在。

nginx -V 的输出是:

nginx 版本:由 gcc 4.4.7 20120313 (Red Hat 4.4.7-4) (GCC) 构建的 nginx/1.5.10 启用 TLS SNI 支持配置参数:--prefix=/etc/nginx --sbin-path=/usr /sbin/nginx --conf-path=/etc/nginx/nginx.conf --error-log-path=/var/log/nginx/error.log --http-log-path=/var/log/nginx /access.log --pid-path=/var/run/nginx.pid --lock-path=/var/run/nginx。锁定 --http-client-body-temp-path=/var/cache/nginx/client_temp --http-proxy-temp-path=/var/cache/nginx/proxy_temp --http-fastcgi-temp-path=/ var/cache/nginx/fastcgi_temp --http-uwsgi-temp-path=/var/cache/nginx/uwsgi_temp --http-scgi-temp-path=/var/cache/nginx/scgi_temp --user=nginx -- group=nginx --with-http_ssl_module --with-http_realip_module --with-http_addition_module --with-http_sub_module --with-http_dav_module --with-http_flv_module --with-http_mp4_module --with-http_gunzip_module --with-http_gzip_static_module -- with-http_random_index_module --with-http_secure_link_module --with-http_stub_status_module --with-http_auth_request_module --with-mail --with-mail_ssl_module --with-file-aio --with-ipv6 --with-http_spdy_module --with-cc -opt='-O2 -g'

欢迎任何提示!