2017-09-22 1 views
1

Ich versuche, eine Cross-Domain-Ajax-Anfrage zu machen ich habe die PHP-Header auf der Empfängerseite gesetzt und setzen Sie die jQuery AJAX-Anfrage, aber aus irgendeinem Grund funktioniert es die Seite aktualisieren und es feuert ein cors Ursprungsfehler mit einem Antwortcode von 503, der von meiner Forschung her durch CORS verursacht wurde.Cross-Domain-AJAX-Anfrage fehlgeschlagen

Ich habe einige Anweisungen von hier gefolgt How do I send a cross-domain POST request via JavaScript?

Header für api.mydomain.co.uk

header('Access-Control-Allow-Origin: https://mydomain.co.uk'); 
header('Access-Control-Allow-Credentials: true'); 
header('Access-Control-Allow-Methods: GET, PUT, POST, DELETE, OPTIONS'); 

jQuery für mydomin.co.uk

$.ajax({ 
 
    type: 'POST', 
 
    url: "//api.mydomain.co.uk/application/mp/basket", 
 
    crossDomain: true, 
 
    xhrFields:{withCredentials: true}, 
 
    data: {Route: "ItemCount"}, 
 
    success: function(data) { 
 
     $('.count').text(data); 
 
    } 
 
});

Browser Antwort enter image description here

+0

Können Sie eine Erfassung der Anfrage posten, die zu einer 503-Antwort führt? – Halcyon

+0

Hallo sorry ich bin ein bisschen ein erster Timer mit diesem, wäre das die PHP-Funktion, die ich benutze oder die Header-Antwort? – James

+0

'crossDomain: true' macht nicht, was Sie denken, dass es tut. Es spoofs eine domänenübergreifende Anfrage, wenn es keine gibt. Wenn Ihre Anfrage bereits _actually_crossdomain ist, sollten Sie sie nicht verwenden. Lies die jquery ajax docs. – ADyson

Antwort

0

ich dieses Problem einmal hatte und ich damit gelöst, habe ich eine .htaccess Datei in der Ziel-Website war ich zugreifen möchten.

<IfModule mod_headers.c> 
    SetEnvIf Origin "http(s)?://(www\.)?(mydomain)$" AccessControlAllowOrigin=$0$1 
    Header add Access-Control-Allow-Origin * 
</IfModule> 

Es ist ein IF-Bedingung, wenn die Domäne, die hat mydomain darin anfordert, dann wird es ermöglichen, die Sie zugreifen.

+0

Das was der PHP-Code tun sollte. Ich bezweifle, dass es die 503 repariert. – Halcyon

0

Die CORS-Richtlinie sollte auch angeben, welche Header Sie senden können.

Die 503 ist ein bisschen seltsam. Ich denke, Sie müssen Content-Type in der Liste der zulässigen Header und vielleicht andere festlegen. Nach MDN diese: https://developer.mozilla.org/en-US/docs/Glossary/simple_header sind die Header, die Sie brauchen nicht explizit

header('Access-Control-Allow-Headers: Content-Type, etc'); 
1

Es dass sind Buggy ein bisschen einige Plesk-Installationen stellt sich heraus zu senden und die 503-Fehler kommt aus dem proxy_fcgi Apache Prozess.

Um diesen Fehler temporär zu beheben, müssen Sie Ihre Anwendung in plesk so einstellen, dass sie FastCGI anstelle von FPM verwendet, das von Apache/Nginx bedient wird.

Verwandte Themen