Heroku上托管的Flask应用程序在我的计算机上显示散景图,但在任何其他计算机上都没有

ryevplcw  于 2022-11-13  发布在  其他
关注(0)|答案(1)|浏览(143)

我是Flask的新手,在Heroku上托管应用程序。我编写了一个相当简单的Flask应用程序,当我在Heroku上托管它并转到应用程序URL时,它会在我的计算机上正确显示散景图。但是,当我从任何其他计算机访问应用程序URL时,应用程序加载正常(没有错误),但不显示图。甚至散景图的边框也丢失了。您可以从下拉菜单中选择不同的城市,URL也会相应地更改,但没有显示任何曲线。
我试图找出API调用或HTML文件是否存在问题,但据我所知,这两个问题都不是我的系统特有的。我还尝试使用网上找到的建议修改Procfile,但没有一个能改变这种行为。
编辑:我已经找出了问题所在。我将在下面详细说明这个问题(和解决方案),这样如果其他人遇到同样的问题,他们就可以看到同样的解决方案是否对他们有效。
至少对我来说,问题出在我的html文件里,我在下面把它包括了进去。

<html>
<head>
<link
    href="http://cdn.bokeh.org/bokeh/release/bokeh-0.12.13.min.css" 
    rel="stylesheet" type="text/css">
<link
    href="http://cdn.bokeh.org/bokeh/release/bokeh-widgets-0.12.13.min.css"
    rel="stylesheet" type="text/css">

<script src="http://cdn.bokeh.org/bokeh/release/bokeh-0.12.13.min.js"></script>
<script src="http://cdn.bokeh.org/bokeh/release/bokeh-widgets-0.12.13.min.js"></script>

</head>
<body>
<H1>Cuisine Histogram</H1>

<form action="/">
<select name="zip_code">
    {% for feature in list_of_zips %}
        {% if feature == zip_code %}
            <option selected value="{{ feature }}">{{ feature }} . 
 </option> 
        {% else %} 
            <option value="{{ feature }}">{{ feature }}</option> 
        {% endif %}
    {% endfor %}
</select>
<input type="submit">
</form>

{{ script|safe }}
{{ div|safe }}

</body>
</html>

结果表明,如果引用和脚本调用从http改为https,则任何计算机上的绘图都能正确显示。显然,这些调用在后台被pydata页面无声地拒绝了。改为https后,它们就可以通过了。

ulmd4ohb

ulmd4ohb1#

事实证明,将对散景脚本的调用从http改为https解决了这个问题。将链接改为https后,绘图在我系统的所有浏览器上以及许多其他计算机上都能正确显示。显然,调用可能在后台被无声地拒绝了,因此没有出现错误,只是在绘图应该出现的地方出现了一大片空白。

相关问题