Basic-Authentifizierung für eine url in einem iframe
Brauche ich, um zu authentifizieren, die eine Anforderung gesendet wird in einem iframe (die wird über javascript erstellt) auf einer Seite. Die Authentifizierung erfolgt mit basic-http-Authentifizierung. Ich habe versucht zu tun
http://user:password@server
aber scheinbar ist dies nicht im IE, weil der eine " security exception:
http://support.microsoft.com/kb/834489
Gibt es eine andere Möglichkeit, die ich hinzufügen können Sie die Authentifizierung in der Anfrage, so dass der iframe automatisch mit dem server authentifizieren? Danke.
Hier der code, den ich derzeit benutze, funktioniert nicht:
var url = 'http://userName:test@localhost:12000/Service.svc/GetStatus';
try {
//Attach image to cache auth
var frame = $('<iframe />');
frame.load(function() {
alert('here');
});
$('body').append(frame);
frame.attr('src', url);
//img.remove();
}
catch (e) {
}
InformationsquelleAutor mrK | 2013-03-26
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich zu lösen hatte genau dieses Problem. Die einzige Lösung, die ich gefunden habe ist die Verwendung eines reverse-proxy. Dies funktioniert wie folgt:
Also es ist ein reverse-proxy läuft, der irgendwo getrennt von den Ziel-server. Die Details des basic-Authentifizierung gespeichert, in der reverse-proxy.
Sagen, dass die URL in
iframe
sieht wie folgt aus (vorausgesetzt, der reverse-proxy läuft auf port8088
):Den reverse-proxy übersetzt die Anfrage wie folgt Aussehen:
Wo
destination_host
,PORT
und details des basic-Authentifizierung (an den Zielserver gesendet, die als request-Header, so dass Sie nicht mehr sichtbar in der URL) von der reverse-proxy-Konfiguration auf der Grundlage derproxy_id
das war in der ursprünglichen URL.Den reverse-proxy-ändern Sie die
host
header (von*.proxy_host.com
zudestination_host.com
), aber es wird nicht den Pfad zu ändern, damit der proxy ist transparent für alle Anfragen aus dem browser, einschließlich aller sub-Anforderungen zum downloaden von CSS-oder JavaScript-Dateien oder auch keine Anfragen initiiert von JavaScript.Dieses set-up erfordert entsprechende DNS-Einträge, so dass
proxy_id.proxy_host.com
löst auf die IP des reverse-proxy unddestination_host.com
löst auf die IP des Ziel-Servers. Je nach Anforderungenproxy_host
werden können, eigentlich das gleiche wiedestination_host
(z.B. wenn der proxy läuft auf dem Ziel-server).Das war die Grundidee. In meinem Projekt proxy-Konfigurationen dynamisch Hinzugefügt werden können, so dass ich hatte, um sicherzustellen, dass alle sub-domains auf die Haupt-domain
*.some_host.com
auflösen, um dieselbe reverse-proxy-IP. Ich bin mit Acryl-DNS für die standardmäßig als Windowshosts
Datei nicht unterstützt sub-domains wie*
(catch-all).Je nach den Anforderungen Ihrer Projekte können Sie in der Lage zu finden, eine geeignete reverse-proxy, der verwendet werden könnte, für diesen Zweck. Mein Projekt ist geschrieben in Erlang und ich konnte keine proxy, den ich nutzen könnte, so das ich umgesetzt habe meine eigene. Überprüfen Sie es auf github: yoonka/charreada. Es hat keine Dokumentation, aber der code ist Recht einfach. Es könnte potenziell mit jedem Projekt in jeder Sprache geschrieben, aber momentan ist die Einschränkung, die der Konfiguration Hinzugefügt wird mit Erlang Anrufe (wie in meinem Projekt-es wird geliefert von einem anderen Erlang-Anwendung). Lesen der Konfiguration aus einer statischen Datei, sowie eine bessere Dokumentation, die Hinzugefügt werden können, wenn es nur das verlangen nach 🙂
InformationsquelleAutor Amiramix