我知道这是一个重复的问题,但我的要求略有不同,
在上一个问题中,通过设置来解决这个问题:
document.domain = "yourdomain.com";
在两个页面上。
但是......我有一个www.example.com域名,我有一个mail.example.com
mail.example.com是我无法访问的子域名,它由我的共享主机及其访问我的电子邮件的地方自动生成。但是我想在我的一个页面上使用mail.example.com作为源的iframe。
e.g。
// www.example.com/mail.php
<html>
<head>...</head>
<body>
...
<? include("header.php"); ?>
...
<iframe src="mail.example.com"></iframe>
...
</body>
</html>
这可以按预期工作,但某些样式应用于iframe,所以我想使用javascript删除所有样式,然后添加我自己的样式。
但是因为我无法访问mail.example.com,所以我无法在子域中设置document.domain = "example.com";
。
还有另一种方法吗?
编辑
我没有说清楚我已经尝试过的东西。
这是我在www.example.com域名的mail.php页面中的确切iframe代码:
<iframe id="mail" src="http://mail.a3mediauk.co.uk/mail2/source/index.php" height="800" width="960"></iframe>
这是在mail.php页面的head元素最顶部的javascript代码:
document.domain = "http://mail.a3mediauk.co.uk";
这是我试图用来删除样式的jquery代码:
$(function(){
$("iframe#mail").load(function(){
$("iframe#mail body").removeAttr("bgcolor");
});
});
如果有任何帮助,document.domain会在chrome控制台中抛出此错误:
Uncaught Error: SECURITY_ERR: DOM Exception 18
答案 0 :(得分:0)
你可能忘记了http://
iFrame是客户端(HTML),因此您必须输入绝对路径,因为它是一个不同的域。您所写的内容将重定向到http://yourdomain.com/mail.yourdomain.com
。
答案 1 :(得分:0)
就相同的原始政策而言,URL必须完全匹配。如果一个是另一个的子域并不重要;字符串不同,所以你违反了政策。
我没有看到一个好的解决方案。如果页面很简单(没有或只有简单的JavaScript,没有链接等),您可以尝试将带有JavaScript的邮件页面提取到String中,去掉标题(即将body
转换为div
})然后将其添加到您的主页面。但是,当然,这会破坏所有链接,引用者,并导致许多其他问题,例如,如果安装了新版本的邮件接口会发生什么?
另一种解决方案是安装代理服务,使mail.domain.com
的所有内容都可用your.domain.com/mail
。如果您在域上运行Apache,则使用the "Proxy Throughput" feature的简单重写规则应该可以解决问题。