我尝试使用使用HTTP身份验证的系统制作iframe。我使用此代码:
<iframe id="dashboard"></iframe>
<script type="text/javascript">
$.ajax(
{
url: \'https://mysystem.xxxx/\',
beforeSend: function(xhr) {
xhr.withCredentials = true;
xhr.setRequestHeader(
"Authorization", "Basic Z2Vxxxxxxxxxxx=="
);
},
success: function(data) {
$(\'#dashboard\').attr(\'src\', \'https://mysystem.xxxx\');
$(\'#dashboard\').contents().find(\'html\').html(data);
}
}
);
</script>
使用此代码,当加载页面时,它会向系统生成三个请求:
如果我删除此行:
$(\'#dashboard\').attr(\'src\', \'https://mysystem.xxxx\');
页面加载,但iframe的静态内容(images,css,js)返回404.
答案 0 :(得分:-1)
您可以使用绝对路径制作图片,css,js资源,例如:https://somedomain.com/path/to/image.jpg
。这样,您就不需要提供src
的iframe。
<强>更新强>
假设您的服务器以字符串形式返回data
,您可以搜索&amp;将那里的所有相对路径替换为绝对路径。
const data = `<link rel="/css/relative/path" /><body><img src="/some/relative/path"/>
<img src="https://some-other-abs.com" /></body>`;
const absData = data.replace(/(?:rel|src)="([^"]+)"/g, function(group, match) {
if (!match.startsWith('http')) {
return group.replace(match, `http://example.com${match}`);
}
return group;
})
console.log(absData);
&#13;