wake-up-neo.com

Wie setze ich 'X-Frame-Optionen' auf iframe?

Wenn ich eine iframe so erstelle: 

var dialog = $('<div id="' + dialogId + '" align="center"><iframe id="' + frameId + '" src="' + url + '" width="100%" frameborder="0" height="'+frameHeightForIe8+'" data-ssotoken="' + token + '"></iframe></div>').dialog({

Wie kann ich den Fehler beheben?

Die Anzeige von 'https://www.google.com.ua/?gws_rd=ssl' in einem Frame wurde abgelehnt, da für "X-Frame-Options" "SAMEORIGIN" festgelegt wurde.

mit JavaScript?

108
Darien Fawkes

Sie können X-Frame-Options nicht für die iframe festlegen. Dies ist ein Antwortheader, der von der Domäne festgelegt wurde, von der Sie die Ressource anfordern (in Ihrem Beispiel google.com.ua). Sie haben den Header in diesem Fall auf SAMEORIGIN gesetzt, was bedeutet, dass das Laden der Ressource in einer iframe außerhalb ihrer Domäne nicht zulässig ist. Weitere Informationen finden Sie unter Der Antwortheader für X-Frame-Options in MDN.

Eine schnelle Überprüfung der Header (hier in den Chrome-Entwicklerwerkzeugen gezeigt) zeigt den vom Host zurückgegebenen X-Frame-Options-Wert.

enter image description here

155
Drew Gaynor

Sie scheinen das Problem falsch zu verstehen. X-Frame-Options ist ein Header, der mit der Aufforderung zurückgegeben wird, anzugeben, ob sich die angeforderte Domäne innerhalb eines Frames anzeigen lässt. Es hat nichts mit Javascript oder HTML zu tun und kann vom Ersteller der Anfrage nicht geändert werden.

Diese Website hat diese Kopfzeile so eingestellt, dass sie nicht in einer iframe angezeigt werden kann. Sie können nichts dagegen tun, um dieses Verhalten zu stoppen.

Weitere Informationen zu X-Frame-Optionen

54
Rory McCrossan

Wenn Sie die Kontrolle über den Server haben, der den Inhalt des Iframes sendet, können Sie die Einstellung für X-Frame-Options in Ihrem Webserver festlegen.

Apache konfigurieren

Um den X-Frame-Options-Header für alle Seiten zu senden, fügen Sie der Konfiguration Ihrer Site Folgendes hinzu:

Header always append X-Frame-Options SAMEORIGIN

Nginx konfigurieren

Um nginx so zu konfigurieren, dass der X-Frame-Options-Header gesendet wird, fügen Sie dies entweder Ihrer http-, Server- oder Standortkonfiguration hinzu:

add_header X-Frame-Options SAMEORIGIN;

Keine Konfiguration

Diese Kopfzeilenoption ist optional. Wenn die Option nicht festgelegt ist, können Sie diese Option für die nächste Instanz konfigurieren (z. B. den Browser des Besuchers oder einen Proxy).

source: https://developer.mozilla.org/en-US/docs/Web/HTTP/X-Frame-Options

22
rubo77

nicht wirklich ... habe ich benutzt 

 <system.webServer>
     <httpProtocol allowKeepAlive="true" >
       <customHeaders>
         <add name="X-Frame-Options" value="*" />
       </customHeaders>
     </httpProtocol>
 </system.webServer>
5
LongChalk

Da die Lösung für die Serverseite nicht wirklich erwähnt wurde:

Man muss solche Dinge einstellen (Beispiel von Apache), dies ist nicht die beste Option, da dies alles erlaubt, aber wenn Sie sehen, dass Ihr Server richtig funktioniert, können Sie die Einstellungen problemlos ändern.

           Header set Access-Control-Allow-Origin "*"
           Header set X-Frame-Options "allow-from *"
3
Mike Q

und wenn nichts hilft und Sie diese Website dennoch in einem iframe präsentieren möchten, sollten Sie X Frame Bypass Component verwenden, das einen Proxy verwendet.

2
Tomer Ben David

Ich hatte das gleiche Problem auf meinem Virtualmin-Server (Apache) für WordPress in einer Unterverzeichnisse und keine der obigen Antworten konnte das Problem in meinem Fall lösen, und die x-Frame-Optionen verweigerten die Fehlermeldung auf der Konsole, bis ich versuchte, sie hinzuzufügen unter der Zeile .htaccess-Datei, die sich in meinem public_html\subdirectory\ (WordPress-Stammverzeichnis) befindet:

header always set x-frame-options "SAMEORIGIN"

und dies war die einzige funktionierende Lösung in meinem Fall. (Beachten Sie, dass es einen Teil gibt, der always set statt append oder always append enthält.)

2

Der HTTP-Antwortheader von X-Frame-Options kann verwendet werden, um anzugeben, ob ein Browser eine Seite in einem <frame>, <iframe> oder <object> rendern darf oder nicht. Sites können dies verwenden, um Clickjacking-Angriffe zu vermeiden, indem sichergestellt wird, dass ihr Inhalt nicht in andere Sites eingebettet wird.

Für weitere Informationen: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Frame-Options

Ich habe eine alternative Lösung für dieses Problem, die ich mit PHP demonstrieren werde:

iframe.php:

<iframe src="target_url.php" width="925" height="2400" frameborder="0" ></iframe>

target_url.php:

<?php 
  echo file_get_contents("http://www.example.com");
?>
2

Die Lösung besteht darin, ein Browser-Plugin zu installieren. 

Eine Website, die den HTTP-Header X-Frame-Options mit einem Wert von DENY (oder SAMEORIGIN mit einem anderen Server-Origin-Server) ausgibt, kann nicht in einen IFRAME integriert werden. Es sei denn, Sie ändern dieses Verhalten, indem Sie ein Browser-Plugin installieren, das den X-Frame-Options-Header ignoriert (z. B. Chrome ignoriert X-Frame-Header ).

Beachten Sie, dass dies aus Sicherheitsgründen überhaupt nicht empfohlen wird. 

1
Julien Kronegg

Sie können den x-iframe nicht wirklich in Ihren HTML-Text einfügen, da er vom Websitebesitzer bereitgestellt werden muss und innerhalb der Serverregeln liegt.

Was Sie wahrscheinlich tun können, ist eine PHP -Datei zu erstellen, die den Inhalt der Ziel-URL lädt, und wenn Sie diese PHP-URL rammen, sollte dies reibungslos funktionieren.

1

Zu diesem Zweck müssen Sie die Position in Ihrem Apache oder einem anderen Dienst, den Sie verwenden, anpassen

Wenn Sie Apache verwenden, dann in der Datei httpd.conf.

  <LocationMatch "/your_relative_path">
      ProxyPass absolute_path_of_your_application/your_relative_path
      ProxyPassReverse absolute_path_of_your_application/your_relative_path
   </LocationMatch>
0
Ibtesam Latif

sie können dies in der Tomcat-Konfigurationsdatei auf Instanzebene (web.xml) tun, indem Sie den 'Filter' und die Filterzuordnung 'in der Konfigurationsdatei web.xml hinzufügen. Dies fügt die [X-Frame-Optionen = VERWEIGERN] auf allen Seiten hinzu, da dies eine globale Einstellung ist.

<filter>
        <filter-name>httpHeaderSecurity</filter-name>
        <filter-class>org.Apache.catalina.filters.HttpHeaderSecurityFilter</filter-class>
        <async-supported>true</async-supported>
        <init-param>
          <param-name>antiClickJackingEnabled</param-name>
          <param-value>true</param-value>
        </init-param>
        <init-param>
          <param-name>antiClickJackingOption</param-name>
          <param-value>DENY</param-value>
        </init-param>
    </filter>

  <filter-mapping> 
    <filter-name>httpHeaderSecurity</filter-name> 
    <url-pattern>/*</url-pattern>
</filter-mapping>
0
Rejji

Versuche dies

response['X-Frame-Options'] = 'ALLOWALL'

oder

response['X-Frame-Options'] = 'ALLOW-FROM http://yourdomain.com'

beispiel

class ExampleView(generic.View):

    @method_decorator(csrf_exempt)
    def dispatch(self, request, *args, **kwargs):
        return super(ExampleView, self).dispatch(request, *args, **kwargs)

    def get(self, request, *args, **kwargs):
        res = api_request('get', 'example/xyx')
        response = HttpResponse(res)
        return self.set_response_header(request, response)

    def options(self, request, *args, **kwargs):
        response = HttpResponse()
        return self.set_response_header(request, response)

    def set_response_header(self, request, response):
        response['Access-Control-Allow-Origin'] = request.META.get('HTTP_Origin') if request.META.get('HTTP_Origin') else '*'
        response['Access-Control-Allow-Headers'] = 'x-requested-with, content-type, accept, Origin, authorization, x-csrftoken, user-agent, accept-encoding, cache-control'
        response['Access-Control-Allow-Methods'] = 'GET, POST, PUT, PATCH, DELETE, OPTIONS'
        response['Access-Control-Max-Age'] = '86400'
        response['Access-Control-Allow-Credentials'] = 'true'
        response['X-Frame-Options'] = 'ALLOWALL'
        return response
0
HoangYell

sie können die X-Frame-Option in der Web-Konfiguration der Site festlegen, die Sie wie folgt in den Iframe laden möchten

<httpProtocol>
    <customHeaders>
      <add name="X-Frame-Options" value="*" />
    </customHeaders>
  </httpProtocol>
0
Nikki