AngularJS $http.post-server nicht zulässt, dass eine Anfrage mit der Methode OPTIONEN
Ich versuche zu tun, eine HTTP-POST an einen server.
Die Daten, die ich senden ist ein json-Objekt.
Das problem ist, dass $http.post in eckigen überschreiben Sie die Methode mit Optionen.
Ich kann diese config
.config(['$httpProvider', function ($httpProvider) {
//Reset headers to avoid OPTIONS request (aka preflight)
$httpProvider.defaults.headers.common = {};
$httpProvider.defaults.headers.post = {};
$httpProvider.defaults.headers.put = {};
$httpProvider.defaults.headers.patch = {};
}])
und änderungen von Optionen zu POSTEN, aber ich kann nicht den content-type auf "application/json", und ich erhalte ein "415 Unsupported Media Type"
Danke
Sie haben Kontrolle über den server, auf den Sie zugreifen? Es ist vielleicht nicht die Unterstützung ein OPTIONEN Methode Anforderung. Sie können nicht vermeiden, preflight bei der Verwendung von CORS via $httpProvider.
InformationsquelleAutor agusgambina | 2014-03-13
Du musst angemeldet sein, um einen Kommentar abzugeben.
$http.post in eckige nicht überschreiben die Methode, mit OPTIONEN. Es erscheint, dass Sie versuchen, rufen Sie die api in einer anderen domain als die, die Ihr JS-code kommen. Dies wird als Cross-Domain. Für solche Fälle führt der browser preflight-Anfrage mit OPTIONEN, um die zurückgegebenen Header. In Ihrem back-End-Antwort, die Sie sollte hinzufügen, die Kopf -
Access-Control-Allow-Origin: *
zum Beispiel. Wenn der browser sieht, dass Kopf-er führt die eigentliche POST-request.Mehr details hier: https://developer.mozilla.org/en/docs/HTTP/Access_control_CORS
Hoffe, dass dies hilft!
Öffnen devtools in chrome, welche Ausnahme genau das bekommst du in der Konsole?
Der server erlaubt keine CORS, also ich bin auf der Suche, welche Optionen ich zur Verfügung habe, ist die Implementierung ein proxy, um die Anfragen. Vielen Dank für die Antworten @Naor.
wie stellen Sie in einem backend-Reaktion, ermöglicht das cross-domain ?
Ich bin Entsendung einer POST-route eingerichtet, auf Sinatra läuft auf heroku
InformationsquelleAutor Naor
Hinzufügen
Beachten Sie aber, damit wird der Content-Type-header Global.
Wenn Sie benötigen, um den content-type-pro Anruf, sollten Sie
$http.post
wieSollten nicht haben, dies zu tun, wird der Standardwert für $http.post ist application/json. Siehe /docs/api/ng/service/$http-version, suchen Sie nach "Einstellung für HTTP-Header'.
diese eigentlich für mich gearbeitet. hatte zu verwenden
$http.post(url, data)
statt$http({ method: 'POST', data: data })
InformationsquelleAutor Vaibhav Jain