Tôi có một API NET Web rất đơn giản tổ chức trong Azure, với hai phương pháp rất đơn giản:
[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)";
}
}
Tôi đã tạo một simple plunk để gọi những phương pháp này. Trong mã AngularJS của tôi, tôi đang thực hiện hai cuộc gọi http $ rất đơn giản. GET hoạt động tốt. Tuy nhiên, POST luôn trả về "400 (Yêu cầu không hợp lệ)", ngay sau đó trong giao diện điều khiển WebStorm của tôi bằng "XMLHttpRequestion không thể tải ... Mã trạng thái HTTP không hợp lệ 400".
Bất kỳ và tất cả đề xuất đều được đánh giá cao!
EDIT !!
Xin chào và cảm ơn các phản hồi rất nhanh. Tôi chỉ nhận ra rằng tôi quên thêm một số chi tiết rất có liên quan.
Tham số cho phương thức POST của tôi là phương thức tôi gọi là đối tượng Envelope, chứa hai thuộc tính: listingId (int)
và Description (string)
. Khi tôi thêm tiêu đề Loại nội dung được mã hóa url và chuyển '{"listingId":1234, "Description":"some description"}'
làm dữ liệu POST của tôi, thông số env trong phương thức POST của tôi trên máy chủ là NULL (có nghĩa là, dường như không thể phân tích cú pháp JSON tôi đang cung cấp). Xin lỗi, điều này đã bị bỏ qua khỏi bài đăng gốc.
kiểm tra xem bạn có bất kỳ thẻ 'xsrf' nào trong biểu mẫu hay không. nếu đó là trường hợp không quên gửi mã thông báo đó. –
Yêu cầu xem trước (OPTIONS) không thành công. Xem liệu điều này có giúp http://stackoverflow.com/questions/17713412/cors-post-requests-not-working-options-bad-request-the-origin-is-not-allow – Chandermani
bản sao có thể có của [Làm thế nào để tôi đăng dữ liệu dạng url được mã hóa với $ http trong AngularJS?] (http://stackoverflow.com/questions/24710503/how-do-i-post-urlencoded-form-data-with-http-in-angularjs) – allenhwkim