我正在开发Flask Web应用程序。
要访问内容和功能,您需要登录。
但是,有时登录后立即加载而不是加载整个主页,而是加载了空白的“ about:srcdoc”页面。
我在整个家庭路由功能中放置了打印语句,现在我知道仅在返回render_template()开始运行之后(根据命令提示符,由render_template发送get请求之后),才会发生此错误。
base.html:
<html>
<head>
<title>Veritas Annotator</title>
</head>
<body>
<script src="https://code.jquery.com/jquery-3.4.1.js" integrity="sha256-WpOohJOqMqqyKL9FccASB9O0KwACQJpFTUBLTYOVvVU=" crossorigin="anonymous"></script>
{%if session['logged_in']%}
<div><h4><a href="/">Annotator</a> | Logged in as "{{ session['username'] }}" | <a href="/logout">Logout</a></h4></div>
<hr>
{%else%}
<div><h4><a href="/register">Register</a> | <a href="/login">Login</a></h4></div>
<hr>
{%endif%}
{% block content %}{% endblock %}
<style>
body{
margin: 0;
padding: 0;
}
.column{
width: 40%;
padding: 10px;
}
.left{
float: left;
}
.right{
float: right;
}
.row:after {
content: "";
display: table;
clear: both;
}
h4 {
color: black;
text-align: center;
font-family: Arial;
font-size: 20px;
vertical-align: bottom;
}
</style>
</body>
</html>
index.html(为简化起见,简称:)
{% extends "base.html" %}
{% block content %}
{% if not session['logged_in'] %}
<h4>Please, log in to annotate.</h4>
{% else %}
{% if t1,t2 %}
<meta name="viewport" content="width=device-width, initial-scale=1">
<div class="row" style="width: 100%; height: 80%; min-height: 600px;">
<div class="column left" style="width:50%; position: relative; display: inline-block; margin: 0; border: 0; padding: 0;">
<iframe id="cframe" style="display: block" width="100%" height="100%" srcdoc="{{t1}}"></iframe>
</div>
<div class="column right" style="width:50%; position: relative; display: inline-block; margin: 0; border: 0; padding:0;">
<iframe id="oframe" style="display: block" width="100%" height="100%" srcdoc="{{t2}}"></iframe>
</div>
</div>
{% endif %}
{% endif %}
{% endblock %}
Python片段(为清楚起见,变量较少):
return render_template('index.html', t1=c_body, t2=o_body)
其中c_body和o_body都是使用硒浏览器检索的页面源。page_source
根据命令提示符,在该错误之前发生的最后一件事是(请注意,此错误并非总是错误之前的http代码,有时它是代码200而不是404):
"GET /api-proxy/-/locale_data/rendr-fe/de-DE/bbd065fad57e0e1eeb40f4f3d5045acf_b8cf454f8216fc48b02d6b403858fbbe2fa3ef36.js HTTP/1.0" 404 -
如果任何人以前了解过该请求的含义或曾遇到此问题,我们将非常感谢您的帮助。我已经在网上寻找了几天,但似乎找不到任何资料来解释正在发生的事情。
EDIT1 :此处完整代码=> https://github.com/MohamedMoustafaNUIG/AnnotatorVM
EDIT2 :如果您认为我应该在问题中加入其他信息,请随时提及(即使您不知道解决方案)。如果不解决此问题,该应用程序将无法稳定发布,这意味着需要花费超过3周的时间才能完成工作。
EDIT3:已打开的“ about:srcdoc”页面的html:
<html>
<head></head>
<body></body>
</html>
(在开发工具中)没有控制台消息
答案 0 :(得分:0)
iframe中的某些组件似乎正在将父级导航到about:scrdoc
解决此问题所需要做的就是向iframe添加沙箱属性,并且仅限制顶部导航。