我试图将json数据发布到服务器。我正在使用visual studio 2012 RC和windowsazure来托管Web应用程序。在发布时我收到以下错误:
选项http:// * .azurewebsites.net / api / Child 405(方法不允许)jquery-1.7.1.js:8102
XMLHttpRequest无法加载http:// * .azurewebsites.net / api / Child。 Access-Control-Allow-Origin不允许使用null。
我的客户端代码是:
function PostChild() {
var Chld = {};
Chld.Child_FirstName = $("#Child_FirstName").val();
Chld.Child_LastName = $("#Child_LastName").val();
Chld.Child_Age = $("#Child_Age").val();
var createurl = "http://*.azurewebsites.net/api/Child";
$.ajax({
type: "POST",
url: createurl,
contentType: "application/json; charset=utf-8",
data: JSON.stringify(Chld),
statusCode: {
200: function () {
$("#txtmsg").val("done");
alert('Success');
}
},
error:
function (res) {
alert('Error');
$("#txtmsg").val("error" + " "
+ res.status + " " + res.statusText);
}
});
}
我的服务器端代码是:
public HttpResponseMessage PostChild(Child child)
{
if (ModelState.IsValid)
{
db.Children.Add(child);
db.SaveChanges();
HttpResponseMessage response = Request.CreateResponse(HttpStatusCode.Created, child);
response.Headers.Location = new Uri(Url.Link("DefaultApi", new { id = child.ChildID }));
return response;
}
else
{
return Request.CreateResponse(HttpStatusCode.BadRequest);
}
}
请帮帮我
谢谢,
答案 0 :(得分:1)
错误是由CORS(跨源资源共享)引起的。默认情况下,网页无法调用除页面来源之外的域上的服务(API)。这是一种避免跨站点伪造攻击的安全措施。
要解决此问题,请遵循以下教程: