Heim >Backend-Entwicklung >PHP-Tutorial >Javascript – Problem mit domänenübergreifenden Ajax-Anfragen

Javascript – Problem mit domänenübergreifenden Ajax-Anfragen

WBOY
WBOYOriginal
2016-09-23 11:31:031430Durchsuche

Die PHP-Seite hat einen Header("Access-Control-Allow-Origin:*");

Ajax-Anfrage

<code>    $.ajax(
    {
        type : "post",
        url : url,
        async : false,
        dataType: 'json',
        data : {asdsa:1},
        success : function (obj)
        {
                //业务代码

        },
        error : function (obj) {
            alert('未找到文件');
        }
    }
    );</code>

Wenn die Daten beispielsweise leer sind, meldet {} einen Fehler, dass im CORS-Header „Access-Control-Allow-Origin“ fehlt

Schreiben Sie einfach einen Parameter in Daten, wie zum Beispiel {dasdsa:1}, und es ist normal. Was ist los?
Dieses Problem trat nicht auf, wenn der domänenübergreifende Zugriff nicht an einen Domänennamen auf dem Testcomputer gebunden war. Jetzt funktioniert es nicht, wenn der Domänenname online gebunden ist

ps. Es gibt einen Unterschied zwischen dem Testen und dem Onlinegehen. Apache wird zum Testen des Backends verwendet, und Nginx wird dafür verwendet, dass das Backend online geht.

Antwortinhalt:

Die PHP-Seite hat einen Header("Access-Control-Allow-Origin:*");

Ajax-Anfrage

<code>    $.ajax(
    {
        type : "post",
        url : url,
        async : false,
        dataType: 'json',
        data : {asdsa:1},
        success : function (obj)
        {
                //业务代码

        },
        error : function (obj) {
            alert('未找到文件');
        }
    }
    );</code>

Wenn die Daten beispielsweise leer sind, meldet {} einen Fehler, dass im CORS-Header „Access-Control-Allow-Origin“ fehlt

Schreiben Sie einfach einen Parameter in Daten, z. B. {dasdsa:1}, und es ist normal. Was ist los?
Dieses Problem trat nicht auf, wenn der domänenübergreifende Zugriff nicht an einen Domänennamen auf dem Testcomputer gebunden war. Jetzt funktioniert es nicht, wenn der Domänenname online gebunden ist

ps. Es gibt einen Unterschied zwischen dem Testen und dem Onlinegehen. Apache wird zum Testen des Backends verwendet, und Nginx wird dafür verwendet, dass das Backend online geht.

Ich weiß nicht, was Sie unter domänenübergreifend verstehen. Ajax kann nur innerhalb des Stammverzeichnisses betrieben werden.

Es fühlt sich an wie ein Ajax-Cache-Problem und die domänenübergreifende Verbindung sollte jsonp sein

Ist es ein serverseitiger Fehler oder ein clientseitiger Fehler, der im Netzwerk gemeldet wurde?

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn