CORS mit IE11+ Zugriff Verweigert mit SSL-localhost
Die Sehr Kurze Version: ist jemand erfolgreich anfordernden lokalen Ressourcen via AJAX im IE über SSL? Ich kann mich nicht lösen immer eine "Zugriff verweigert" - Fehler.
Die Längere Version:
Ich bin mit AJAX zum abrufen von JSON aus einer Anwendung, die eine lokale web-service. Der web-service-Kanal ist verschlüsselt, so dass, wenn der remote-Ort bedient werden, die über HTTPS, keine "unsichere Ressource auf einer sicheren Seite" - Fehler angezeigt.
So, in der Adresszeile ist eine remote-site eine Art... mysite.com. Es empfängt Informationen von https://localhost/
.
Dem web-Dienst Einstellung, die richtigen Header für CORS und alles funktioniert in Chrome und Firefox. Im IE, wenn ich meine https://localhost
Ressource in der Adressleiste die korrekte Ressource zurückgegeben und angezeigt. Jedoch, bei der Verwendung von AJAX (nicht nur der Adressleiste), eine Sicherheitseinstellung im IE ist es möglich, den Zugriff verweigern. Dokumentiert ist diese (zum Teil) hier:
Zugriff verweigert im IE 10 und 11, wenn ajax Ziel ist localhost
Die einzig richtige Lösung in einer Antwort, die anfragende domain (mysite.com in diesem Fall) zu den vertrauenswürdigen sites. Es funktioniert, aber wir würden lieber nicht haben eingreifen des Benutzers... verweist auf einen knowledge base-Artikel beschreibt, wie Sie eine Vertrauenswürdige site ist, kaum eine großartige user experience. Die anderen Antworten auf diese Frage sind ungültig aus den gleichen Gründen wie unter-->
Einige mehr stolpern herum und ich entdeckte dies:
CORS mit IE, XMLHttpRequest und ssl (https)
Hatte eine Antwort mit einer wrapper für AJAX-Anfragen im IE. Es schien vielversprechend, aber es stellt sich heraus, IE11 hat jetzt veraltet das XDomainRequest-API. Dies war wohl das richtige sein für Microsoft zu tun... aber jetzt ist der "hack" Problemumgehung zum hinzufügen eines void onProgress-handler, um das XDR-Objekt ist natürlich keine option, und die einst vielversprechende Abhilfe wrapper gerendert wird, ist null und nichtig.
Hat jemand stoßen entweder:
a) ein Weg, um diese Wünsche durch, ohne dass zum ändern der vertrauenswürdigen sites im IE? In anderen Worten, eine aktualisierte version der workaround im zweiten link?
b) als "nächsten besten" Fall: ein Weg, um den Benutzer aufzufordern, fügen Sie die Website zu Ihren vertrauenswürdigen zone? "mysite.com Wünsche werden Hinzugefügt, um Ihre vertrauenswürdigen Zonen. Bestätigen ja/Nein" und haben es getan, ohne Sie tatsächlich benötigen, zu öffnen, Ihre Muttersprache Einstellungen Dialoge und es manuell zu tun?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Aus Gründen der Sicherheit, Internet Explorer XDomainRequest-Objekt blockiert den Zugriff (siehe #6 hier) auf der Intranet-Zone aus der Zone Internet. Ich würde nicht überrascht sein zu erfahren, dass dieser block wurde geportet in dem IE10+ CORS-Implementierung des XMLHTTPRequest-Objekts.
Ein Ansatz, der kann helfen, ist zu ändern Sie einfach aus
localhost
zu127.0.0.1
als letztere behandelt, alsInternet Zone
eher alsIntranet Zone
und als Folge der zone-Kreuzung vermieden wird.Allerdings sollten Sie sich bewusst sein, dass Internet Explorer 10+ blockiert alle Zugriffe auf den lokalen computer (über eine beliebige Adresse), wenn eine Website läuft im Erweiterten Geschützten Modus (EPM)-- siehe "Loopback blockiert" in dieser Beitrag. Derzeit, DH verwendet EPM nur für Internet-sites, wenn Sie ausführen, in der U-Bahn/Immersive browsing-Modus (nicht Desktop), aber dies könnte sich in Zukunft ändern.
Nein, es gibt keinen Mechanismus, um zu zeigen, die Zonen-Konfiguration-UI JavaScript oder automatisch verschieben einer Website von einer zone zur anderen. Die Tatsache jedoch, dass Sie einen lokalen server bedeutet, dass Sie das ausführen von code auf dem client bereits, das heißt, Sie könnten verwenden Sie die entsprechende API um die Zone zu aktualisieren Mapping auf dem client. Beachten Sie, dass eine solche Veränderung erfordert, dass man DEUTLICH erhalten Benutzer zuerst um Erlaubnis, damit Sie sich an Ihren Installateur behandelt werden als malware von Windows-Defender und andere security-Produkte.
So, in Zusammenfassung, unter Verwendung der IP-Adresse dienen als Problemumgehung für viele, aber nicht alle Plattformen.
Internet Zone
vsIntranet Zone
. Das ist mein problem gelöst, vielen Dank!localhost
und127.0.0.1
zugeordnet sind, die in Sicherheitszonen. Welches ist das richtige? Danke!Da sind zwei verschiedene Domänen, eine Lösung wäre, eine Anwendung zu erstellen, die proxies, die Anfragen in die Richtung, die Sie wollen.
Wenn Sie haben die Kontrolle über die example.com Ende, und wollen Unterstützung von Benutzern, die bringen Ihre eigenen localhost-service, das würde härter werden, als würden Sie um weitere Anforderungen für das, was Sie bringen.
Wenn jedoch, haben Sie die Kontrolle über das, was läuft in "localhost" und zugreifen möchten example.com und haben Sie Zugriff auf die localhost-service, set-up, Umleitung in Ihrem web-server-Einstellungen oder verwenden Sie einen reverse-proxy. Fügen Sie einen Endpunkt auf der gleichen localhost app, die nicht überlappen, Pfade, zum Beispiel, route
http://localhost/proxy/%1
zuhttp://%1
wird, während der rest von localhost allein. Oder führen Sie einen proxy auf z.B.http://localhost:8080
führt, die eine ähnliche Umleitung und bedienen können example.com von einem Pfad, und die API von einem anderen.Dieser landet als eine Art von "Leim" oder die integration von code, der erlauben sollte, Sie zu verspotten Wechselwirkungen bis zu einem gewissen Punkt.