无法获得烧瓶瞬间以在野生动物园中显示日期

我正在尝试自学flask,但是遇到了无法使用Safari浏览器(13.0.2)使用flask-moment显示日期的问题。它们在Chrome中显示正常。下面是一个演示这种行为的最小应用程序。

我对Web开发人员的经验不足,无法确定这是烧瓶瞬间的错误,moment.js的错误,jQuery的错误,还是误解我可以在某个地方进行一些小的更改来解决。我尝试过编辑发送到浏览器的标记,但是我没有运气。具体地说,我将属性“ display:none”更改为“ display:inline”,但这导致显示非格式化时间戳而不是格式化日期(我想总比没有好吗?)。

另一方面,一个运行正常的最小javascript示例表明,它本身并不是moment.js / Safari问题,但我想这与幕后发生的jQuery / bootstrap魔术有关。

main.py:

from flask_bootstrap import Bootstrap
from flask_moment import Moment
from flask import flask,render_template
from datetime import datetime

app = flask(__name__)
bootstrap = Bootstrap(app)
moment = Moment(app)

@app.route('/')
def index():
    return render_template('index.html',current_time=datetime.utcnow())

if __name__ == '__main__':
    app.run()

base.html:

{% extends "bootstrap/base.html" %}
{% block head %}
{{ super() }}
  {% block scripts %}
  {{ super() }}
  {{ moment.include_moment() }}
  {% endblock %}
{% endblock %}

{% block content %}
  {% block page_content %}
  {% endblock %}
{% endblock %}

index.html:

{% extends 'base.html' %}

{% block page_content %}
Current time: {{ moment(current_time).format('LLL') }}.
{% endblock %}

Safari的输出:

无法获得烧瓶瞬间以在野生动物园中显示日期

Chrome输出:

无法获得烧瓶瞬间以在野生动物园中显示日期

编辑:一条有用的评论建议我使用Safari开发工具来调查问题。加载JavaScript控制台时,我看到一些错误弹出窗口:

无法获得烧瓶瞬间以在野生动物园中显示日期

在谷歌搜索后,我确定我需要添加一个access-control-allow-origin标头,并将视图函数更新为:

from flask import make_response

...

@app.route("/")
def index():
    resp = make_response(render_template('index.html',current_time=datetime.utcnow()))
    resp.headers['access-control-allow-origin'] = '*'
    return resp

不幸的是,我得到了完全相同的错误集。我还尝试了flask-cors库,该库包含一个cross_origin装饰器,应该可以解决此问题,但结果仍然相同。

编辑2:我已经“解决”了这个问题。 include_moment()函数包含一个参数sri(用于“子资源完整性”),如果为true,则检查所获取的资源是否已被操纵。如果将其设置为false,错误将消失并且日期显示良好。如果不能在不禁用检查的情况下解决此问题,我会很好奇。

lixuebo7456 回答:无法获得烧瓶瞬间以在野生动物园中显示日期

暂时没有好的解决方案,如果你有好的解决方案,请发邮件至:iooj@foxmail.com
本文链接:https://www.f2er.com/3127130.html

大家都在问