1

Ich habe diesen seltsamen Fehler in letzter Zeit aufgetreten. Hier ist der Ablauf des gesamten Prozesses.SCRIPT70: Berechtigung verweigert auf JQuery Ajax Post

  1. Es gibt einen JQuery Ajax-Post-Aufruf an eine Website, die den Inhalt eines div aktualisieren wird. Es übergibt die Parameter an diese Website und gibt das HTML-Skript zurück.
  2. Wenn der Post erfolgreich ist, löscht er zuerst das div und schreibt es mit dem Rückgabewert neu, der von dieser Website abgerufen wurde.

Der Fehler am Punkt aufgetreten 2.

Hier ist die seltsame Sache:

In meiner Maschine es in der virtuellen Maschine (Windows 10) fein (Windows 8) und auch funktioniert. Ich benutzte den gleichen Browser (IE 11 und Edge) für beide. Mein Kollege konnte jedoch Punkt 2 nicht ausführen, weil er den Client-Seitenfehler SCRIPT70: Berechtigung verweigert hatte. Er benutzte Edge.

Ich werde einen Teil des Codes in meinem nächsten Update veröffentlichen. Aber bis jetzt habe ich es in Bezug auf Sicherheit überprüft, aber keines wirklich.

Wie kann ich das beheben?

UPDATE

Hier ist der Code, der eine Webseite (oder aspx) über JQuery Ajax Beitrag Anrufe und abruft und aktualisiert die div.

function RefreshDiv(isChild) { 
    var data = { 
    ActionType: "AJAX", 
    Action: "Refresh" 
    }; 

    $.post("RefreshDivContents.aspx", data, function (result) { 
    if(result != '') { 
     var divItems; 

     if(isChild) { 
      divItems = window.parent.$("#TopDiv").find("#DivItems"); 
     } 
     else { 
      divItems = $("#DivItems"); 
     } 

     divItems.empty(); // error hit here. 
     divItems.append(result); 
    } 
    }); 
} 

UPDATE # 2 ich den Beispielcode für weitere Informationen aktualisiert. Ich habe auch platziert, wo der Fehler aufgetreten ist, aber ich weiß nicht, warum es dort getroffen hat. Es sollte nur die Gegenstände ausräumen.

UPDATE # 3 Basierend auf Jakobs Antwort bekam ich neugierig, was die Protokoll- und Portnummern der beiden iframe src der ist. Unten ist das Ergebnis basierend auf der Konsole.

enter image description here

+0

Welche URL verwendet Ihr Freund? Diese Art von Fehlern wird häufig durch Dinge verursacht, wie z. B. domänenübergreifende Anfragen oder der Versuch, Ajax über eine 'file: //' URL auszuführen. Sie sollten mehr Details darüber sammeln, wie der Unterschied zwischen der Art und Weise, in der Ihr Kollege den Code ausführt, und dem, was Sie tun, besteht. Es kann auch unterschiedliche Browser-Sicherheitseinstellungen geben. – Jacob

+0

Es ist eine Webanwendung, in der es eine der ASPX-Seiten aufruft. – Musikero31

+0

Auf der gleichen Domain oder auf einer anderen Domain? – Jacob

Antwort

1

Das sieht problematisch:

divItems = window.parent.$("#TopDiv").find("#DivItems"); 

ich es von diesem Snippet nehmen, dass das Hauptproblem mit Same-origin policy ist. Ein Dokument in einem Ursprung kann Inhalte in einem anderen nicht aktualisieren. In diesem Fall sieht es beispielsweise so aus, als ob Ihr Code möglicherweise in einer iframe ausgeführt wird und versucht, divs im übergeordneten Dokument zu aktualisieren. Wenn die beiden Dokumente denselben Ursprung haben, gibt es kein Problem.

Deshalb habe ich nach URLs gefragt. Es ist wichtig, zu überlegen, was die URLs sind für die beiden Dokumente eine Lösung zu finden das Skript zum Laufen zu bringen:

Wenn es eine Frage des Dokuments ist ein von http://example.com und Dokument B wird von http://www.example.com sein, Dokument B nur document.domain = 'example.com'; laufen muss den Ursprung ändern.

Wenn die beiden Dokumente unterschiedliche Portnummern haben, aber das gleiche Domain & Protokoll, können beide ihre document.domain auf die gleiche Domain setzen, um die Portnummer von ihren Ursprüngen zu entfernen, wodurch sie kompatibel sind.

Wenn man HTTPS verwendet und der andere HTTP verwendet, dann ist es überraschend, dass der nicht sichere Frame überhaupt geladen wird, und selbst wenn, würde es Ihnen schwerfallen, auf das andere Dokument zuzugreifen.

Wenn die beiden völlig inkompatible Domänennamen haben, müssen Sie CORS implementieren.

Um zusammenzufassen, müssen Sie die gleichen Ursprungsrichtlinien verstehen, die ein echter Schmerz sind, aber Benutzer vor bösartigen Skripten schützt, und bauen Sie dann Ihre App, um sie unterzubringen.

+0

Ich habe tatsächlich versucht, die URL zu den vertrauenswürdigen Sites in den Internetoptionen hinzuzufügen, aber es trifft immer noch den Fehler in Edge. Hättest du Ideen dafür? – Musikero31

+0

aber ich finde es immer noch komisch, weil die beiden Dateien im selben Ordner und in der gleichen Domäne sind. – Musikero31

+0

Die Dateien sind unabhängig davon, ob die Sites vertrauenswürdig sind. Wie lauten die tatsächlichen URLs der Dokumente? Das ist was zählt. – Jacob