2016-07-20 7 views
0

Ich versuche y.example.com beiermöglichen Sub-Domain iframe Zugang

die Einstellungen Hier sind gehostet auf einer Webseite von x.example.com iframe angezeigt werden, die ich so für

Tomcat getan haben:

<filter> 
    <filter-name>ClickJackFilterEnabled</filter-name> 
    <filter-class>org.apache.catalina.filters.HttpHeaderSecurityFilter</filter-class> 
    <init-param> 
     <param-name>antiClickJackingEnabled</param-name> 
     <param-value>false</param-value> 
    </init-param> 
</filter> 

<filter-mapping> 
    <filter-name>ClickJackFilterEnabled</filter-name> 
    <url-pattern>/*</url-pattern> 
</filter-mapping> 

Spring Security:

httpResponse.setHeader("Content-Security-Policy", "default-src 'self' *.example.com; style-src 'self' *.googleapis.com *.amazonaws.com 'unsafe-inline'; script-src 'self' 'unsafe-inline' 'unsafe-eval'; child-src 'self' *.example.com; font-src *;img-src 'self' *.amazonaws.com"); 
    httpResponse.setHeader("Access-Control-Allow-Origin", "http://*.example.com"); 

Wenn ich die Seite mit eingebettetem iframs öffnen, bin ich immer noch gettin g dieser Fehler:

Refused to display 'http://x.example.com/' in a frame because it set 'X-Frame-Options' to 'SAMEORIGIN'. 

Uncaught SecurityError: Sandbox access violation: Blocked a frame at "http://y.example.com" from accessing a frame at "http://x.example.com". The frame being accessed is sandboxed and lacks the "allow-same-origin" flag. 

Wenn ich die Header mit curl geprüft, wird der Header X-Frame-Options nicht

Dies ist die die Ausgabe von curl

* Rebuilt URL to: y.example.com/ 
    % Total % Received % Xferd Average Speed Time Time  Time Current 
           Dload Upload Total Spent Left Speed 
    0  0 0  0 0  0  0  0 --:--:-- --:--:-- --:--:--  0* Trying 127.0.0.1... 
* Connected to y.example.com (127.0.0.1) port 80 (#0) 
> GET/HTTP/1.1 
> Host: y.example.com 
> User-Agent: curl/7.47.0 
> Accept: */* 
> 
< HTTP/1.1 200 OK 
< Server: Apache-Coyote/1.1 
< X-Content-Type-Options: nosniff 
< X-XSS-Protection: 1; mode=block 
< Cache-Control: no-cache, no-store, max-age=0, must-revalidate 
< Pragma: no-cache 
< Expires: 0 
< X-Application-Context: application:dev:8080 
< Content-Security-Policy: default-src 'self' *.example.com; style-src 'self' *.googleapis.com *.amazonaws.com 'unsafe-inline'; script-src 'self' 'unsafe-inline' 'unsafe-eval'; child-src 'self' *.example.com; font-src *;img-src 'self' *.amazonaws.com 
< Access-Control-Allow-Origin: http://*.example.com 
< Content-Type: text/html;charset=UTF-8 
< Content-Language: en-IN 
< Transfer-Encoding: chunked 
< Date: Wed, 20 Jul 2016 13:21:57 GMT 
< 
{ [8200 bytes data] 

Was existieren bin ich fehlt ?

UPDATE:

Ich versuchte

document.domain = "example.com" 

Auf beiden Web-Seiten zu setzen, ich bin immer noch der Fehler immer

Refused to display 'http://x.example.com/' in a frame because it set 'X-Frame-Options' to 'SAMEORIGIN' 

Wenn ich tippe

document.domain 

im Javascript conso le, ich bekomme

"example.com" 

Auf beiden Webseiten. Der Ursprung ist also für beide Seiten gleich.

Antwort

0

x.example.com ist derjenige, der den SAMEORIGIN-Header sendet. y.example.com kann dies nicht überschreiben, da es dann keine Möglichkeit gibt, einen iframe include zu blockieren. Eine Site muss anderen Sites die Berechtigung (durch das Fehlen einer Ursprungsrichtlinie oder eine Liste von Websites mit einer Berechtigung) erteilen, um ihren Inhalt aufzunehmen.

Überprüfen Sie die Header von x .example.com und Sie sollten sehen, dass die Richtlinie den iframe blockiert.

+0

Beide Unterdomänen werden auf demselben Server gehostet, und die Einstellungen sind identisch. Die von den beiden Subdomänen zurückgegebenen Header sind genau gleich. –

0

Endlich konnte ich das Problem lösen. Das Problem liegt wahrscheinlich darin, wie Browser mit dem X-Frame-Options-Header umgehen.

Das Konzept hinter

document.domain = "example.com" 

Einstellung ist der Ursprung für beide gleich die Web-Seiten zu machen. Browser erlaubt zu einer übergeordneten Domäne, so dass eine Seite bei axexample.com eingestellt Wert von document.domain zu x.example.com oder example.com

Einstellung Ursprung nun auch nach der Einstellung document.domain bis Beispiel. com, war ich immer den Fehler

Refused to display 'http://x.example.com/' in a frame because it set 'X-Frame-Options' to 'SAMEORIGIN' 

Als ich die X-Freme-Optionen insgesamt Header entfernt,

http.headers().frameOptions().disable(); 

In securityConfiguration.java mit, es funktionierte!

Ich kenne nicht den Grund, warum Browser die Einstellung document.domain nicht berücksichtigten. Konnte dazu nichts in der Mozilla-Dokumentation finden oder woanders. Hoffe, das hilft jemandem.

Verwandte Themen