s3中的HTTPS错误“数据长度太长”

我们试图通过HTTPS / WSS让Socket.io flashsockets在Internet Explorer 9中工作。 闪存卡通过HTTP工作,但HTTPS给我们带来了问题。 我们使用socket.io版本0.8.7和socket.io-client版本0.9.1-1。

我们通过端口443上的SSL运行我们的websocket服务器。我们已经在正确的位置指定了我们的WebsocketMainInsecure.swf文件的位置(这些是跨域ws请求),并且我们正在swfobject中嵌入文件通过HTTPS。

我们在我们的EC2实例的安全组中打开了端口843,并且成功通过HTTP呈现了跨源策略文件。 它似乎无法通过HTTPS进行呈现(Chrome会引发SSL连接错误)。

我们已经尝试了两个版本的WebsocketMainInsecure.swf文件。 首先是由Socket.io提供的文件,它由WebsocketMainInsecure.as构建,不包含行

Security.allowInsecureDomain("*");

这会引发错误SCRIPT16389: Unspecified error.WebSocket.__flash.setCallerUrl(location.href)一行。

我们认为这是因为SWF文件不允许HTTPS请求,所以我们将WebSocketMainInsecure.swf文件替换为在此回购版中找到的文件:https://github.com/gimite/web-socket-js,因为它包含

Security.allowInsecureDomain("*");

在actionscript代码行。 当我们使用这个时,我们看到flashsocket连接保持断开连接并以无限循环重新连接。 我们将错误追踪到Transport原型上onSocketError函数的socket.io库中的transport.js文件。 它引发错误:

[Error: 139662382290912:error:1408F092:SSL routines:SSL3_GET_RECORD:data length too long:s3_pkt.c:503:]

我们甚至试图将socket.io和socket.io-client更新到版本0.9.6,并且我们仍然得到了Access is denied错误。

这个错误非常难以调试,现在我们对如何让FlashSocket工作不知所措。 我们想知道它是否可能与使用旧版本的socket.io有关,或者我们的策略文件服务器不接受HTTPS请求,或者甚至可能来自Web的WebSocketMainInsecure.swf文件 - socket-js github repo是根据socket.io-client期望的内容构建的。


我不确定天气是否有效。 但这是我的想法/建议:

  • 想法:我假设你(可能)试图访问一个太长的URL。 如果数据经常通过GET参数传输,则会发生这种情况。 官方对URL的限制是低于512字节。
  • 详细信息:HTTP规范指出协议行最多可能是512字节。 如果服务器更长时间可能会拒绝请求,或者可能无法处理请求。 具有GET-requet的HTTP中的第一行类似于需要适合512字节的“GET / path / to?param1 = data1&param2 = data2&... HTTP / 1.1”。 对于POST请求,不存在这样的限制。

    然而,你的错误似乎来自一些SSL实现(openSSL?):引用s3_pkt.c在503行(我发现这样的文件在这里:http://www.opensource.apple.com/source/OpenSSL/OpenSSL- 7.1 / openssl / ssl / s3_pkt.c)但似乎不同; 我不知道细节,只是猜测:我可以想到,openSSL实现对长GET请求(由于它们不符合HTTP)只能以有限的方式支持,并且以这种方式拒绝它们。

    我现在看到这些可能性:1.解决方案:使用POST而不是GET-Requests传输更长的数据集。 看看这是否工作... 2.尝试替换你使用的服务器上的openssl-installation或libopenssl; 它可能已经坏了或过时了? 3.尝试从openssl开发者处请求一些帮助。

    希望这有助于...


    尝试使用SSL_OP_MICROSOFT_BIG_SSLV3_BUFFER构建OpenSSL(从OpenSSL邮件列表中授予Steven Henson和Jaaron Anderson的赞誉)。

    链接地址: http://www.djcxy.com/p/94591.html

    上一篇: HTTPS error "data length too long" in s3

    下一篇: communicating with socket.io from android