2016-08-26 4 views
-1

Ich hosste eine Webseite auf github (flickrTest.html) und ich versuche, die Existenz eines Ordners im selben Verzeichnis wie die Webseite zu überprüfen. Die gehostete Ordner sieht wie folgt aus: http://imgur.com/a/pZWoHWie überprüfe ich, ob ein Ordner über https existiert

Ich versuche, einen Ajax-Aufruf wie folgt zu verwenden:

$.ajax({ 
      url: 'mapData', 
      error: function() { 
       //Ddirectory doesn't exist 
       console.log("ERROR: expected directory named 'mapData'. Exiting..."); 
       return 
      }, 
      success: function() { 
       //Directory does exist 
       console.log("mapData exists.."); 
      ... 

aber ich bin ein Mixed-Inhalt Fehler bekommen, weil dieser Anruf betrachtet http und die Seite ist mein Webseite wird auf https gehostet. Irgendwie kann ich auf mapDatas JSON-Dateien zugreifen, wenn ich den absoluten Pfad einschließe. Gibt es eine Möglichkeit, die Existenz eines Ordners über https zu überprüfen?

+2

Die Spannung vom Titel bringt mich um! – krillgar

+0

Bitte verwenden Sie keine Clickbait Style Titel für Fragen. Veröffentlichen Sie die ganze Frage, wohin die Frage geht (der Titel). –

+0

Sie können einen ganzen Ordner nicht über AJAX lesen. Sie können nur auf einzelne Dateien zugreifen. –

Antwort

1

Zuerst gibt es ein grundlegendes Problem mit Ihrem Ansatz. Wie andere in Kommentaren angegeben haben, können Sie nicht überprüfen, ob ein Ordner Inhalt (oder existiert) mit einer einfachen http (oder https) Web-Anfrage hat, da der Webserver erwarten wird, mit HTML zu antworten, das als Information für den Browser eines Benutzers präsentiert werden kann. Sie können einen Handler oder ein Skript erstellen, die eine Verzeichnisanforderung verarbeiten und diese Funktionalität mithilfe einer .htaccess-Regel oder eines anderen Umschreibungssystems zuordnen, je nachdem, auf welcher Plattform Sie sich befinden. Der Grund, warum ich dies als ein "Problem" identifiziert habe und nicht so weit gegangen bin, um zu sagen, dass es unmöglich ist, ist, weil du (wie es aussieht) versuchst, diese Antwort in etwas Nutzbares zu zerlegen. Das heißt, ich denke, es ist neben dem Punkt und nicht die Art des Fehlers, den Sie tatsächlich bekommen.

Der Fehler, der auftritt, kommt vom Laden der aktuellen Seite, in der Sie sich befinden, in HTTPS und die Ajax-Anfrage, die Sie machen, ist über HTTP (wie durch die Fehlermeldung angezeigt). Diese Nachricht kann in Ihrem Fall irreführend sein, da die Anforderungs-URL nicht als HTTPS identifiziert wurde, da der Browser nicht darauf vertraut, dass die URL eine Webanforderung an eine Datei oder einen Ordner ist. Sie können dies korrigieren, indem Sie einfach einen Schrägstrich in den Ordner hinzufügen:

$.ajax({ 
     url: 'mapData/', 
     error: function() { 
      //Ddirectory doesn't exist 
      console.log("ERROR: expected directory named 'mapData'. Exiting..."); 
      return 
     }, 
     success: function() { 
      //Directory does exist 
      console.log("mapData exists.."); 
     ... 

Sie haben nun die Frage der Vollendung des Web-Anfrage aufgelöst, aber Sie sind mit einem Problem konfrontiert, die im ersten Teil erwähnt wird. Der Server gibt einen 404-Fehler zurück, da github.io so konfiguriert ist, dass er auf leere (oder nicht vorhandene) Verzeichnisanforderungen antwortet. Sie benötigen eine Art von serverseitigem Handler, um diese Anfrage zu bearbeiten, oder Sie müssen etwas anderes Creative erstellen, z. B. eine index.html in diesen Ordner einfügen, damit Ihr JavaScript das Ergebnis analysieren kann. Zum Beispiel könnten Sie eine index.html im Ordner löschen und wenn der Server 200 zurückgibt, dann wissen Sie, dass der Ordner existiert, aber wenn er 404 zurückgibt, können Sie annehmen, dass der Ordner nicht existiert.

Für den Fall, dass es nicht bereits bekannt ist, sind Web-Server entworfen, um es so zu machen, dass ein Browser beim Reverse-Engineering seinen Inhalt beschränkt. Während Server zum Zurückgeben von Verzeichnisinhalten konfiguriert werden können, schützen die meisten Ordner standardmäßig, sodass Remotebenutzer den Server nicht ohne eine Art von erhöhten Berechtigungen/Authentifizierung durchsuchen können. Im Wesentlichen ist der Grund, warum dies erfordert eine maßgeschneiderte Server-Side-Ansatz nicht, weil es etwas falsch mit dem Front-End-Code ist, weil der Webserver ist so konzipiert, dass diese Art von Sache nicht zulassen, dass der Server so konfiguriert ist, es zu erlauben aufgrund der Sicherheit.

+0

Dies ist sehr gut erklärt. Danke für die ausführliche Antwort! – Jaitnium

+0

Ich bin froh, dass es hilfreich war. Viel Glück! –

Verwandte Themen