2016-11-08 5 views
0

sendet ich eine absurde Störung erhalten, während Winkel mit $ http mit post-Methode.

Während $ http POST-Anfragen zu senden, ist es nicht Content-type-Header Anbringen und aufgrund derer ich einen Fehler „Antwort für Preflight hat Statuscode ungültig HTTP 404“ erhalten. Das ist mein Code-

var obj={ 
     "mobile":"hello", 
     "password":"asjd" 
    } 
$http({ 
    url: 'http://cbsatwork.com/laundry/api-authentication', 
    method: 'POST', 
    data:obj, 
    headers: { 
     "Content-Type": "application/json" 
    } 
    }) 

Obwohl, wenn ich die „Daten: obj“ entfernen Linie aus dem Code, es funktioniert und ich übliche Antwort vom Server erhalten. Ich habe mir viele Antworten angesehen, konnte aber nichts für mich arbeiten.

EDIT: Ich versuchte mit $ .ajax() -Methode von jQuery, und es funktionierte völlig in Ordnung. keine Probleme. Ich denke also nicht, dass es Probleme mit meinem Server gibt.

+0

Sie diese Anfrage Backend WCF oder WebAPI machen Sie? Wenn dem so ist, kann ich vorschlagen, dass Sie das Attribut CORS enabled hinzufügen, und Ihr Problem hängt wahrscheinlich mit CORS zusammen. https://www.asp.net/web-api/overview/security/enabling-cross-origin-requests-in-web-api – katmanco

+0

Was passiert, wenn Sie die Methode vor der URL übergeben? – Korte

+0

Aus welcher Domain senden Sie die Anfrage? –

Antwort

1

Antwort für Preflight hat ungültige HTTP-Statuscode 404

Dieser Fehler zeigt an, dass wahrscheinlich ein CORS Problem gibt. Ein Browser sendet zwei Anfragen. Die erste Anfrage ist OPTIONS und die andere ist POST, die Sie in Ihrem Beispiel konfigurieren. Das Problem ist unwahrscheinlich, dass mit dem Content-Type Header sein, weil dieser Header gesendet wird, mit POST, nicht OPTIONS. Und es ist die OPTIONS Anfrage, die fehlschlägt. Überprüfen Sie, ob Ihr Server unterstützt OPTIONS Anfrage und sendet richtige CORS erforderlichen Header

+0

Danke Maximum Post, aber ich habe das in meiner Antwort-Header - Access-Control-Allow-Methoden: GET, POST, PUT-OPTIONEN, DELETE, HEAD. Und ich habe sogar eine Cors-Erweiterung in meinem Browser, aber es funktioniert immer noch nicht. –

+0

Plus, das Gleiche passiert, wenn ich $ .jax von jquery anstelle von $ http verwende. Funktion submit() { \t \t \t var obj = {'mobiles': 'asd', 'password': 'asdk'}; \t \t \t $ Schnipsel ({ \t \t \t \t Methode: "POST", \t \t \t \t url: "http: //www.cbsatwork.com/Wäsche/api-Authentifizierung“, \t \t \t \t Daten: obj \t \t \t}); \t \t} Das funktioniert völlig in Ordnung Der einzige Unterschied betwwen zwei Anträge (1 gesendet von $ http und anderen. by $ .ajax ist ein Header-Content-Type) –

+0

ok, können Sie Fiddler verwenden, um zwei Anfragen (OPTONS und POST) und ihre Antworten zu fangen? –