CORS und Javascript Problem


Insomnia1988

Grünschnabel
Hi,

ich habe eine Seite "https://www.example.com/hallo/welt/?someGETparams" die in 'nem iframe den content einer anderen lädt "http://ziel-seite/foo/bar/" (beide gehören mir) und möchte über Javascript den content ändern. Darf es aber nicht aufgrund von Standard XSS Schutz ("SecurityError: Permission denied to access property "document" on cross-origin object").
Mein Problem ist, dass ich CORS nicht zum laufen kriege und auch keine Erfahrung damit habe. Ich hab mal auf stackoverflow geschaut und 'n paar Code-Schnipsel zusammen getragen aber es scheint nicht zu greifen. Mir fehlt z.b. die Info, wie genau der Pfad angegeben werden muss (deshalb hab ich in meinem Beispiel die URL meinem Szenario angepasst).

Folgendes habe ich versucht (läuft alles parallel):
1) In der PHP der Zielseite zu Beginn den Header geändert
PHP:
header('Access-Control-Allow-Origin: https://www.example.com');
header('Access-Control-Allow-Credentials: true');
if ($this->getRequestMethod() == 'OPTIONS') {
  header('Access-Control-Allow-Methods: GET, POST, PUT, DELETE, OPTIONS');
  header('Access-Control-Max-Age: 604800');
  header('Access-Control-Allow-Headers: x-requested-with');
  exit(0);
}
2) Eine .htaccess in dem Ornder gepackt wo die Zielseite liegt
Code:
<IfModule mod_headers.c>
    SetEnvIf Origin "http(s)?://(www\.)?(example.com)$" AccessControlAllowOrigin=$0$1
    Header add Access-Control-Allow-Origin %{AccessControlAllowOrigin}e env=AccessControlAllowOrigin
    Header set Access-Control-Allow-Credentials true
</IfModule>
3) Im HTML head der Zielseite einen meta-tag hinzugefügt
HTML:
<meta http-equiv="Access-Control-Allow-Origin" content="https://www.example.com">

Was mache ich falsch?
 

ComFreek

Mod | @comfreek
Moderator
Eine kleine Websuche hat meinen Verdacht bestätigt: CORS ist nicht für (i)Frames gedacht.

Cross-Origin Resource Sharing (CORS) schreibt:
What requests use CORS?

This cross-origin sharing standard can enable cross-site HTTP requests for:

Zwecks Kommunikation kannst du stattdessen auf Window.postMessage() satteln.