我正在与开发了包含应用程序链接的门户页面的人合作。当单击链接时,我的应用程序将加载到iFrame中,并在网址中附加一个?tonkenid;我不控制门户页面。我想获取iFrame的src属性并解析tokenid,以便在从iframe中加载的应用程序中使用它来进行API调用时使用。
请澄清一下,这是我在门户网站中经过身份验证后所拥有的:
此处已加载我的应用程序。当我在浏览器中检查相关部分时,会得到以下提示:
<body>
<div id="content">
<iframe id="module" src="https://www.myappurl.com/?tokenid=.eJwty8GKgzAQANB_mbMUjWmS8bT_URaZmFEGYlwcw1ZK_72y7PEd3gskcTnkOGF4wb5lVhgeEKvkJGUZVyq08A7fDRznD8MAVS82UCVdyFV0laVyvsVMhXVnPbbzq1RZKP_SeROGdwNKax4LrTz-Nd8itXNMFl2P5Hg2NnjDPPk4JWPu3qPHmRP8T2VV2cqVn9ce78725HzfTTx7tC3G1KLpU0wdOofOMrvQhRAsvD8ho0j5.XNrWyw.8IMfiT9YcfZKGbqedHOHYyDnjVg">
</div>
</body>
因此,我需要从应用程序内部检索由门户生成和附加的此令牌标识。我尝试了许多食谱,这似乎是不可能的。我尝试过:
<script>
function myFunction() {
var res = window.parent.document.getElementById('module')src;
document.getElementById("demo").innerHTML = res;
}
</script>
但这给了我
SecurityError:拒绝访问以下属性“文档”的权限 跨域对象
我还尝试了python请求和urrlib,但均未成功。是否有其他方法可用于基于Django的应用程序来清除?tokenid
我还尝试在listing 2-9中使用Django方法,如下所示:
class PortalTokenid(generic.TemplateView):
template_name = "rom/tokenid.html"
def get_context_data(self, *args, **kwargs):
context = super().get_context_data(**kwargs)
context['portaltokenid'] = self.request.GET.get('portaltokenid', '')
return context
,并在tokenid.html模板中:
<ul>
{% for key, value in context.items %}
<li>{{key}} : {{value}}</li>
{% endfor %}
</ul>
<p style="color: green">{{ context.portaltokenid }}</p>
<p style="color: green">{{ context }}</p>
但是我看不到模板中呈现的任何内容。