Websocket 问题阻止部署在 heroku 中的散景应用程序加载到网站中

Websocket issue preventing bokeh app deployed in heroku from loading in website

我在 heroku 中部署了一个散景应用程序。我想把它嵌入到一个网站中,但是我没有这样做。

应用程序在这里:

https://ckgsb-final.herokuapp.com/cn_ckgsb

这是要在网站中使用的脚本:

from bokeh.embed import server_document

script = server_document("https://ckgsb-final.herokuapp.com/cn_ckgsb")

print(script)

<script id="1014">
  (function() {
    const xhr = new XMLHttpRequest()
    xhr.responseType = 'blob';
    xhr.open('GET', "https://ckgsb-final.herokuapp.com/cn_ckgsb/autoload.js?bokeh-autoload-element=1014&bokeh-app-path=/cn_ckgsb&bokeh-absolute-url=https://ckgsb-final.herokuapp.com/cn_ckgsb", true);
    
    xhr.onload = function (event) {
      const script = document.createElement('script');
      const src = URL.createObjectURL(event.target.response);
      script.src = src;
      document.body.appendChild(script);
    };
    xhr.send();
  })();
</script>

heroku 应用程序的 procfile 是:

web: bokeh serve --port=$PORT --allow-websocket-origin=ckgsb-final.herokuapp.com --address=0.0.0.0 --use-xheaders cn_ckgsb.py

我知道问题出在 websocket 上。我在 procfile 和脚本代码中尝试了应用程序 url 的各种组合,但未能成功修复它。

谢谢。

您还需要为嵌入站点的 URL 配置允许的 websocket 来源。当用户导航到 mysite.org 并且那里的页面尝试嵌入 Bokeh 应用程序时,Bokeh 服务器接收到的 HTTP 来源将为 mysite.org 。如果 Bokeh 服务器未配置为允许该来源,请求将被拒绝。