我已經在Azure中託管,有兩個非常簡單的方法,一個非常簡單的.NET Web API:
[EnableCors(origins: "http://simpleapiearl.azurewebsites.net", headers: "*", methods: "*")]
public class EnvelopesController : ApiController {
// GET: api/Envelopes
public IEnumerable<string> Get() {
return new string[] { "value1", "value2" };
}
// POST: api/Envelopes
public string Post([FromBody]Envelope env) {
return "rval: " + env + " (and my addition to env)";
}
}
我創建了一個simple plunk來調用這些方法。在我的AngularJS代碼中,我做了兩個非常簡單的$ http調用。 GET工作正常。但是,POST總是返回一個「400(Bad Request)」,緊接着在我的WebStorm控制檯中出現「XMLHttpRequestion無法加載...無效的HTTP狀態代碼400」。
任何和所有建議表示讚賞!
編輯!
你好,並感謝非常快的反應。我只是意識到我忘了添加一些非常相關的細節。
我的POST方法的參數是我所說的Envelope對象,它包含兩個屬性:listingId (int)
和Description (string)
。當我添加urlencoded Content-Type標題,並將'{"listingId":1234, "Description":"some description"}'
作爲我的POST數據傳遞時,服務器上POST方法的env參數爲NULL(即,似乎無法解析我提供的JSON)。對不起,這是從原來的帖子中省略。
檢查你是否有任何形式的'xsrf'標記。如果是這種情況,不要忘記發送該令牌。 – 2014-10-01 12:34:50
預檢(OPTIONS)請求失敗。看看這是否有幫助http://stackoverflow.com/questions/17713412/cors-post-requests-not-working-options-bad-request-the-origin-is-not-allow – Chandermani 2014-10-01 12:40:42
可能的重複[我如何POST urlencoded在AngularJS中使用$ http形式的數據](http://stackoverflow.com/questions/24710503/how-do-i-post-urlencoded-form-data-with-http-in-angularjs) – allenhwkim 2014-10-01 17:15:09