371 Stimmen

Ursprung ist nicht durch Access-Control-Allow-Origin erlaubt

Ich mache einen Ajax.request zu einem entfernten PHP-Server in einer Sencha Touch 2-Anwendung (verpackt in PhoneGap).

Die Antwort des Servers lautet wie folgt:

XMLHttpRequest kann nicht geladen werden http://nqatalog.negroesquisso.pt/login.php. Ursprung http://localhost:8888 wird von Access-Control-Allow-Origin nicht zugelassen.

Wie kann ich dieses Problem beheben?

20 Stimmen

Beim Verwenden von jQuery, sorgt dataType: 'jsonp', für den gewünschten Effekt

11 Stimmen

Übrigens ist das nicht die Antwort vom Server. Genauer gesagt wird dieser Fehler auf der Client-Seite angezeigt.

2 Stimmen

Der jsonp-Trick funktioniert wahrscheinlich nicht mehr, fyi: stackoverflow.com/questions/12216208/…

7voto

itzg Punkte 1021

Wenn Sie eine Chrome-Erweiterung schreiben und diesen Fehler erhalten, stellen Sie sicher, dass Sie die Basis-URL der API zum manifest.json's Berechtigungsblock hinzugefügt haben, Beispiel:

"permissions": [
    "https://itunes.apple.com/"
]

6voto

chispitaos Punkte 589

Wenn Sie unter Apache sind, fügen Sie einfach eine .htaccess-Datei in Ihr Verzeichnis mit diesem Inhalt hinzu:

Header set Access-Control-Allow-Origin: *

Header set Access-Control-Allow-Headers: content-type

Header set Access-Control-Allow-Methods: *

5voto

Marius Punkte 3549

Wenn du das in Angular.js bekommst, dann stelle sicher, dass du deine Portnummer so escapst:

var Project = $resource(
    'http://localhost\\:5648/api/...', {'a':'b'}, {
        update: { method: 'PUT' }
    }
);

Siehe hier für weitere Informationen dazu.

5voto

fuzzyalej Punkte 5783

In Ruby on Rails, können Sie in einem Controller folgendes tun:

headers['Access-Control-Allow-Origin'] = '*'

0 Stimmen

In welchem Controller fügst du dies ein, wenn es ein Ajax-Aufruf ist? Kann ich mehr Code-Kontext sehen?

5voto

forzagreen Punkte 2115

Sie können es so einrichten, dass der Browser den Header Access-Control-Allow-Origin: * in den HTTP-Optionen-Antworten einschließt, ohne den Server zu ändern.

Verwenden Sie in Chrome diese Erweiterung. Wenn Sie Mozilla verwenden, überprüfen Sie diese Antwort.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X