RSS

Das Problem der einfachen Implementierung von javascript AJAX Cross-Domain-POST-Fernzugriff

Veröffentlichungsdatum:2022/11/12 11:06

Tatsächlich ist das Problem sehr einfach: Sie können die Anfrage POSTen, und der Server gibt auch eine Antwort zurück.Es ist der Sicherheitsmechanismus moderner Browser, der verhindert, dass lokales Javascript die Antwort verarbeitet. Die Debug-Konsole zeigt:

Der Zugriff auf XMLHttpRequest unter „https://ip.taotu.org/“ vom Ursprung „null“ wurde durch die CORS-Richtlinie blockiert: Für die angeforderte Ressource ist kein „Access-Control-Allow-Origin“-Header vorhanden.

Das Problem besteht darin, dass der Browser beim Posten einer lokalen Seite automatisch einen Header hinzufügt, Origin: null, und wenn der Server den Antwortheader Access-Control-Allow-Origin: * nicht hinzufügt, wenn er die Antwort oder den Header zurückgibt Der vom Server zurückgegebene Wert ist mit Ihrem identisch. Wenn der Ursprung im gesendeten Header nicht übereinstimmt, übergibt der Browser-Client die Antwortdaten nicht zur Verarbeitung an Javascript, was zu einem Fehler führt.

Lösung: Tatsächlich ist es sehr einfach, der Server-Backend-Code, wir müssen nur prüfen, ob die Post-Daten die angegebenen Informationen enthalten (entspricht unserem eigenen Passwort), wenn ja, Access-Control-Allow-Origin hinzufügen: *, damit der Client korrekt behandelt werden kann.

Die Zusammenfassung ist, dass domänenübergreifende AJAX-Anfragen standardmäßig nicht erlaubt sind und der Browser sie verbietet.Der Server beurteilt, ob die Situation notwendig ist, und gibt einen Access-Control-Allow-Origin:*-Antwortheader zurück und es ist OK.

JavaScript-Code der Seite anfordern:

var xhttp = new XMLHttpRequest();

xhttp.onreadystatechange = Funktion () {

if (this. readyState == 4 && this. status == 200) {

document.getElementById("queryipinfo").innerHTML =

this.responseText;

}

};

xhttp.open("POST", "https://ip.taotu.org", true);

xhttp.send('XX kommt von Remote-Anfrage XX'+ipdomain); //Die vorherige Zeichenfolge, die durch den Schlüsselcode hinzugefügt wurde, entspricht unserem eigenen Passwort

Serverseitiger Verarbeitungscode:

Stream oPostData = Request.InputStream;

byte[] bPostByte=neues byte[oPostData.Length];

oPostData.Read(bPostByte, 0, (int)oPostData.Length);

string sPostIPDomain=Encoding.UTF8.GetString(bPostByte);

bool bFromRemote;

if (sPostIPDomain.StartsWith("XX kommt von Remote-Anforderung XX")) //Schlüsselcode

{

bFromRemote=true;

sPostIPDomain = Regex.Replace(sPostIPDomain,"XX stammt von Remote-Anforderung XX(.*)", "$1");

*********Ausgelassener Code********

if (bFromRemote) //Schlüsselcode, um zu beurteilen, ob der Header zurückgegeben werden soll

Response.AddHeader("Access-Control-Allow-Origin", "*"); //Schlüsselcode

Übrigens besteht die normale Lösung darin, Access-Control-Allow-Origin: * im Server-Antwortheader festzulegen, um alle domänenübergreifenden Anfragen zuzulassen, oder Access-Control-Allow-Origin: https://taotu.org zuzulassen Die von der angegebenen Domain gesendete Anfrage wird von der normalen Netzwerkentwicklung verwendet, aber wenn die Anforderung ist, dass die lokal zu Hause gesendete Anfragedomain eine IP-Adresse ist, und es sich nicht um eine feste IP handelt, kann dies lange nicht gelöst werden so Ich habe diese einfache Lösung verwendet.

Mein Zweck ist es, eine statische .html-Datei im Browser des lokalen Computers zu Hause einzurichten und als Standardhomepage festzulegen.Jedes Mal, wenn ich den Browser öffne, sende ich über Java eine Post-Anfrage an den Remote-Server und gebe meine zurück externe Netzwerk-IP und zeigen Sie sie an. Auf der statischen Seite befinden sich auch einige meiner häufig verwendeten Website-Links sowie eine Drei-in-Eins-Suchmaschine.

Dies ist eine kleine Webseite, die ich erstellt habe. Sie kann gerne besucht oder als Startseite festgelegt werden: https://ip.taotu.org

Das Problem der einfachen Implementierung von javascript AJAX Cross-Domain-POST-Fernzugriff

Benutzerkommentar

Neuen Kommentar hinzufügen

verifizieren

188BET - Die beste Sportwetten-Plattform