iFrame Javascript через субдомен - PullRequest
0 голосов
/ 13 января 2012

Я знаю, что это дублирующий вопрос, но мои требования немного отличаются,

В предыдущем вопросе это было решено установкой:

document.domain = "yourdomain.com";

на обеих страницах.

Однако ... У меня есть домен www.example.com, и у меня есть mail.example.com

mail.example.com - это поддомен, к которому у меня нет доступа, он автоматически генерируется моим общим хостингом и где я получаю доступ к своим электронным письмам. Однако я хочу использовать iframe с mail.example.com в качестве источника на одной из моих страниц.

1012 *, например *

// 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"; в поддомене.

Есть ли другой способ обойти это?

РЕДАКТИРОВАТЬ

Я не очень ясно дал понять, что уже пробовал.

Это мой точный код iframe на моей странице mail.php в домене www.example.com:

<iframe id="mail" src="http://mail.a3mediauk.co.uk/mail2/source/index.php" height="800" width="960"></iframe>

Это код JavaScript, который находится в самом верху элемента head на странице mail.php:

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

Ответы [ 2 ]

0 голосов
/ 13 января 2012

Что касается той же политики происхождения, URL должны точно совпадать. Неважно, является ли один поддомен другого; строки разные, поэтому вы нарушаете политику.

Я не вижу хорошего решения. Если страница была простой (без или только с простым JavaScript, без ссылок и т. Д.), Вы можете попытаться извлечь почтовую страницу с JavaScript в строку, обрезать заголовок (т.е. преобразовать body в div), а затем добавьте это на свою главную страницу. Но, конечно, это сломает все ссылки, источник ссылок и вызовет множество других проблем, например, что произойдет, если установлена ​​новая версия почтового интерфейса?

Другим решением может быть установка прокси-службы, которая делает все из mail.domain.com доступным как your.domain.com/mail. Если вы запускаете Apache в своем домене, простое правило перезаписи, использующее , функцию «Пропускная способность прокси» , должно сработать.

0 голосов
/ 13 января 2012

Вы, наверное, забыли http:// IFrame является клиентским (HTML), поэтому вам нужно ввести абсолютный путь, потому что это другой домен. То, что вы написали, будет перенаправлено на http://yourdomain.com/mail.yourdomain.com.

...