2016-08-09 1 views
0

Was ist die beste Methode, um AJAX-Anfragen und andere Browser-HTTP-Anfragen zu unterscheiden? Ich benutze Vanilla NodeJS mit AtomicJS als AJAX-Bibliothek. Es scheint nicht den 'X-Requested-With'-Header zu setzen, den ich gelesen habe, wurde von JQuery verwendet, um AJAX-Anfragen anzuzeigen. Sollte ich zu einer Bibliothek wechseln, die das tut? Gibt es eine andere Möglichkeit, AJAX-Anfragen zu erkennen? Sollte ich nur versuchen, den Header manuell zu setzen, und gibt es mögliche Probleme dabei?Erkennen von AJAX-Anfragen in Vanilla NodeJS ohne JQuery

+0

Warum nicht einfach einige Daten in der Ajax-Anfrage übergeben, und überprüfen, ob es da ist, sollten Sie nicht wirklich mehr benötigen – adeneo

Antwort

1

Es gibt keine zuverlässige Möglichkeit, den Unterschied zu erkennen (kurz, wenn Sie explizit einen Header oder ein anderes Kennzeichen für alle Ihre eigenen Anfragen setzen). Noch wichtiger ist, dass es nicht wirklich wichtig ist, wie die Anfrage gesendet wurde.

0

Sie könnten explizit angeben, dass die Anfrage von einer Ajax-Anfrage in der Kopfzeile oder im Hauptteil der Anfrage stammt, aber wahrscheinlich wäre die bessere Möglichkeit, einen separaten Endpunkt auf dem Server für eine Ajax-Anfrage zu haben .

Zum Beispiel Ihre uri für eine nicht Ajax-Request könnte

http://myserver.com/non-ajax-uri 

sein und dann könnte man einen anderen Endpunkt bei

http://myserver.com/ajax-uri 

haben Wenn die meisten das Verhalten einfach zwischen den beiden Endpunkten geteilt wird kapseln es in einer anderen Funktion, die beide Endpunkte teilen.

+0

Also sagen, ich habe eine Ajax Anfrage, deren Rolle ist es, einige JSON-Daten vom Server zu greifen und zu übergeben zu einem Skript Client-Seite. Wenn ich einen separaten Endpunkt verwende, wie kann ich verhindern, dass Benutzer einfach zu http://myserver.com/ajax-uri navigieren und eine Reihe von Rohdaten sehen? –

+0

@ S.Liu Ich nehme an, Sie haben bereits einige Autorisierung/Authentifizierungsmechanismus vorhanden, und Sie können nicht ausdrücklich einen autorisierten Benutzer für den direkten Zugriff auf die URI verbieten, können Sie es effektiv verbergen, indem Sie keine direkte Verknüpfung zu der URI von der Anwendung erstellen . Es sollte keine Sicherheitsprobleme geben, wenn der Benutzer bereits autorisiert ist. Wenn die Daten nicht in einem hässlichen Format angezeigt werden sollen, sollte dies kein Problem darstellen. – Hopeless