2

我正在尝试将 json 数据发布到服务器。我正在使用 Visual Studio 2012 RC 和 windowsazure 来托管 Web 应用程序。在发布时出现以下错误:

  1. 选项 http:// * .azurewebsites.net/api/Child 405(不允许的方法)jquery-1.7.1.js:8102

  2. XMLHttpRequest 无法加载 http:// * .azurewebsites.net/api/Child。Access-Control-Allow-Origin 不允许 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);
        }
    }

请帮帮我

谢谢,

4

1 回答 1

1

错误是由于 CORS(跨源资源共享)造成的。默认情况下,网页无法调用页面来源域以外的域上的服务 (API)。这是一种避免跨站点伪造攻击等的安全措施。

要解决它,请遵循本教程:

http://blogs.msdn.com/b/carlosfigueira/archive/2012/02/20/implementing-cors-support-in-asp-net-web-apis.aspx

于 2012-08-22T04:25:07.510 回答