2013-03-22 9 views
9

Mam element iframe na mojej stronie P1 hostowanej na serwerze S1. W środowisku wykonawczym wykonuję iframe.src=, aby załadować stronę P2 hostowaną na serwerze S2 wewnątrz elementu iframe.Błąd uprawnień do skryptu, nawet przy włączonej funkcji CORS

Wiem o CORS i na serwerze S2 na stronie P2, już ustawiłem Access-Control-Allow-Origin: * i mogę potwierdzić ten sam nagłówek odpowiedzi, gdy sprawdzę to w przeglądarce.

Teraz strona P2 i wszystkie jej zasoby wczytują się, ale w chwili, gdy próbuję uzyskać dostęp do DOM-a P2 z P1 przy użyciu window.frames["iframe"].document, zgłoszony zostanie błąd uprawnień.

Mimo że ustawiam Access-Control-Allow-Origin: * na serwerze S2, dlaczego nadal nie mogę uzyskać dostępu do DOM P2? Czy w ten sposób ma działać Access-Control-Allow-Origin: *?

Request-Response

+0

Co dzieje się z wnioskiem przed lotem? Zobacz https://developer.mozilla.org/en-US/docs/HTTP/Access_control_CORS – symcbean

+1

Tak, świetnie byłoby zobaczyć źródła nagłówków żądania/odpowiedzi. –

+0

Cóż, nie używam XMLHttpRequest i nie jestem pewien, czy mogę go używać z "iframe.src". Ale mogę potwierdzić, że nagłówek odpowiedzi dla P2 zawiera "Access-Control-Allow-Origin: *" pochodzący z S2. – coreSOLO

Odpowiedz

1

Można użyć PostMessages ustawić komunikację między dokumentami. Nawet jeśli pochodzą z różnych domen.

Możesz wysyłać dane przez PostMessage. Jest ograniczony, ale to jest lepsze niż nic.

Spójrz na http://easyxdm.net/wp/ ma dobre api do pracy. Dawno temu zrobiłem międzydomenowe http < -> https żądania ajax z tą biblioteką.

+0

Dzięki, ale niestety potrzebuję bogatszej kontroli niż "PostMessages". Szukam pełnej manipulacji DOM i myślałem, że "Access-Control-Allow-Origin: *" powinno mi to zapewnić. – coreSOLO

+0

@coreSOLO, jeśli możesz zmienić kod strony iframed, możesz wywoływać wywołania RPC za pomocą 'EasyXDM' i wykonywać wszelkie manipulacje DOM, których potrzebujesz. To nie będzie łatwe, ale na pewno można. –

+0

@coreSOLO z 'EasyXDM' udało mi się zebrać zawartość ze wszystkich znaczników script w iframe i wysłać ją na stronę główną –