JQuery-Ajax-POST an Web-API-Rückgabe 405-Methode Nicht Erlaubt
So, ich habe einen jquery-ajax-request wie dieser:
function createLokiAccount(someurl) {
var d = {"Jurisdiction":17}
$.ajax({
type: "POST",
url:"http://myserver:111/Api/V1/Customers/CreateCustomer/",
data: JSON.stringify(d),
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function(data){alert(data);},
failure: function(errMsg) {
alert(errMsg);
}
});
}
Diese auf meine web-api, die im Grunde ist:
[HttpPost]
public CreateCustomer.Response CreateCustomer(CreateCustomer.Request request)
{
HttpContext.Current.Response.AppendHeader("Access-Control-Allow-Origin", "*");
...
Welches wenn ich es in Chrome gibt mir:
OPTIONS http://myserver:111/Api/V1/Customers/CreateCustomer/405 (Method Not Allowed)
No 'Access-Control-Allow-Origin' header is present on the requested resource.
Wenn ich die POST-Anforderung von Fiddler ' es gehört "Access-Control-Allow-Origin: *" in der Antwort-header, so wie es sein sollte, die würde vorschlagen, die API korrekt konfiguriert ist, wird noch die (von Fiddler) die jquery-Anfrage sieht wie folgt aus:
OPTIONEN http://myserver:111/Api/V1/Customers/CreateCustomer/ HTTP/1.1
Host: myserver:111
Connection: keep-alive
Access-Control-Request-Methode: POST
Herkunft: http://localhost:6500
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/34.0.1847.116 Safari/537.36
Access-Control-Request-Header: accept, content-type
Akzeptieren: /
Referer: http://localhost:6500/Home/Replication?interval=1
Accept-Encoding: gzip,deflate,sdch
Accept-Language: en-US,en;q=0.8,en-GB;q=0.6,es-ES;q=0.4,es;q=0.2
So, warum ist mein POST-Anfrage immer verwandelte sich in eine OPTIONS-Anfrage?
Ja, bin ich. GET-Anfragen scheinen gut zu funktionieren, es ist nur die POST, der nicht das tut was ich erwarten würde.
InformationsquelleAutor Ben Power | 2015-04-23
Du musst angemeldet sein, um einen Kommentar abzugeben.
Zuerst von allen, du bist nur eine zusätzliche header, aber es gibt mindestens drei von Ihnen, die Sie benötigt:
Zweitens, im Falle dass, wenn Sie brauchen, CORS nur für eine Methode in bestimmten controller, die Weise, die Sie Sie Header hinzufügen ist ok. Aber gemein ist es nicht richtig.
ASP.NET 5 mit Web-API-2 bietet CORS-Bibliothek.
Aber wenn Sie mit Web API, die ich anbieten kann, Lösung (nicht wirklich korrekten, aber die Arbeit). Fügen Sie einfach (in Global.asax) zu jedem Antrag erforderlichen Header
InformationsquelleAutor Alexey Avdeyev