【发布时间】:2019-06-17 02:34:05
【问题描述】:
我是 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 允许他们通过。
【问题讨论】:
-
你能描述一下其他电脑上显示的内容吗? 500、404、不同的错误?在我看来,错误出在 heroku 的配置中,而不是在代码中
-
您机器上的所有浏览器是否显示相同的行为?在主浏览器中打开一个隐身窗口怎么样?
-
感谢 cmets。我正在使用 Chrome。我发现 Chrome 中的隐身窗口确实显示了该图(尽管必须启用脚本),但如果我通过 Safari 打开 URL,则不会显示该图。 (没有显示错误,我仍然正确地获得了邮政编码选项的下拉菜单。