Shiny Server定期在防火墙后面的ERR_CONTENT_LENGTH_MISMATCH

时间:2016-12-21 17:09:24

标签: shiny-server

我几天来一直在反对这个问题,我真的希望有一些方向来帮助解决。由于我不知道问题源自何处,因此很难知道寻求帮助的最佳论坛。我还与我的IT部门并行工作以获得帮助。

我正在Microsoft Azure订阅中的Ubuntu 16.04 LTS VM上托管一个Shiny服务器。我已经设置Apache作为反向代理,通过rstudio站点上的每个指令通过端口80托管rstudio服务器和闪亮服务器。 (我的公司防火墙阻止了端口80以外的流量)Rstudio服务器工作正常。

问题:当运行允许用户上传文件的应用程序时,频繁但不可预测的应用程序将崩溃。在一批中上传多个文件时更常见的是崩溃,但在上传单个小文件(~20kb)时也会发生这种情况。我一次上传了多达90个相似大小的文件,有时会成功。很高兴跟进任何特定的配置设置请求。我希望以下线索能够突然向某人指出我指向正确的方向。感谢。

追踪错误来源的线索:

  1. 我只看到公司防火墙背后的问题。我可以在家用电脑上使用该应用程序。
  2. 我在shinyapps.io上托管了这个应用程序,它甚至可以从防火墙后面运行。 (所以我解释这意味着我应该能够以某种方式配置它)
  3. 包含的示例应用以及任何不需要文件上传的应用都能正常运行。
  4. 当我启动新VM时,安装R,然后安装Shiny,将主机端口更改为80,但保留其他所有内容...我仍然有问题。
  5. 我正在使用Chrome的最新版本,并且当我加载应用时,即使应用有效,我也会收到以下消息。 (我用'url'替换了我的域名)

    WebSocket connection to 'ws://url/Shiny/uploadtest/__sockjs__/n=CSo4tDHrGWR4JWQEg4/200/dcuryf1t/websocket' failed: A server must not mask any frames that it sends to the client.
    
    y.websocket                 @ sockjs-0.3.4.min.js:27
    
    y._try_next_protocol        @ sockjs-0.3.4.min.js:27
    
    y._didClose                     @ sockjs-0.3.4.min.js:27
    
    f._ir.onfinish                  @ sockjs-0.3.4.min.js:27
    
    f.emit                          @ sockjs-0.3.4.min.js:27
    
    f.onfinish                      @ sockjs-0.3.4.min.js:27
    
    f.emit                          @ sockjs-0.3.4.min.js:27
    
    g.xhr.onreadystatechange    @ sockjs-0.3.4.min.js:27
    
  6. 只有当应用程序崩溃时,我才会收到以下错误:

    POST http://url/Shiny/uploadtest/session/3bcb8bbc2126672cbc1901c18cfe9d15/upload/36076c87d14189a785e7ceb5?w= net::ERR_CONTENT_LENGTH_MISMATCH
    
    send                                               @    jquery.min.js:4
    
    ajax                                               @    jquery.min.js:4
    
    onFile                                  @input_binding_fileinput.js:92
    
    $run                                            @   file_processor.js:80
    
    (anonymous)                             @   file_processor.js:50
    
    (anonymous)                             @input_binding_fileinput.js:82
    
    (anonymous)                             @   shinyapp.js:610
    
    _sendMessagesToHandlers             @   shinyapp.js:521
    
    dispatchMessage                         @   shinyapp.js:507
    
    c.onmessage                             @   shinyapp.js:114
    
    _conn.onmessage                         @   shiny-server-client.min.js:1
    
    MultiplexClient._conn.onmessage         @   shiny-server-client.min.js:1
    
    BufferedResendConnection._handleMessage     @   shiny-server-client.min.js:1
    
    RobustConnection._handleMessage         @   shiny-server-client.min.js:1
    
    conn.(anonymous function)               @   shiny-server-client.min.js:2
    
    d.dispatchEvent                             @   sockjs-0.3.4.min.js:27
    
    y._dispatchMessage                      @   sockjs-0.3.4.min.js:27
    
    y._didMessage                               @   sockjs-0.3.4.min.js:27
    
    b.onmessage                             @   sockjs-0.3.4.min.js:27
    
    d.dispatchEvent                             @   sockjs-0.3.4.min.js:27
    
    c.xo.onchunk                                @   sockjs-0.3.4.min.js:27
    
    f.emit                                      @   sockjs-0.3.4.min.js:27
    
    g.xhr.onreadystatechange                @   sockjs-0.3.4.min.js:27
    

1 个答案:

答案 0 :(得分:0)

成功,我想在我的案例中为那些偶然发现这个问题的人发布答案。事实证明,我们公司的防火墙并没有通过http连接与Shiny玩得很好。我们设置了apache以通过TLS提供安全连接,现在一切正常。