【问题标题】:asp.net web api AJAX status 0asp.net web api AJAX 状态 0
【发布时间】:2018-03-25 01:15:49
【问题描述】:

我正在尝试使用 asp.net Web API 创建一个基本的 REST POST,但它返回错误状态:0。而且看起来 AJAX 请求失败

我的控制器:

[HttpPost]
    public myData Post( myData m)
    {
        return m;
    }

我的班级:

public class CLData
{
    public string FirstName { get; set; }
    public string LastName { get; set; }
    public int Age { get; set; }
}

我的 HTML 请求:

    <html>

<head>
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
</head>

<body>
    <script>
        //form encoded data
         var dataType = 'application/x-www-form-urlencoded; charset=utf-8';
         var data = $('form').serialize();

         //JSON data
         var dataType = 'application/json; charset=utf-8';
         var data = {
            FirstName: 'Andrew',
            LastName: 'Lock',
            Age: 31
         }

         console.log('Submitting form...');
         $.ajax({
            type: 'POST',
            url: 'http://localhost:52884/api/contact',
            dataType: 'json',
            contentType: dataType,
            data: data,
            success: function(result) {
                console.log('Data received: ');
                console.log(result);
            },
            error: function(error){
                console.log('Error: ');
                console.log(error);
            }
        });
    </script>
</body>

</html>

我不知道为什么我的控制台日志是:

Submitting form..
Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at http://localhost:52884/api/contact. (Reason: CORS header ‘Access-Control-Allow-Origin’ missing).
Error: 
Object with status: 0

有谁知道我做错了什么?我只是想学习 Web API,这就是这个例子如此简单的原因。

【问题讨论】:

  • 作为一个实验,尝试将 'url: 'localhost:52884/api/contact' 替换为 'url: '/api/contact'。假设您的应用程序实际上同时托管 API 端点并为页面提供服务。如果它没有为页面提供服务,您需要在您的应用程序中启用跨域请求。
  • 还是同样的问题。

标签: c# asp.net ajax asp.net-web-api


【解决方案1】:

如果您的应用程序没有同时提供 Web 视图和 API 端点,则您需要启用跨域请求。为此,您需要在 WebAPI 项目中配置 Cors。您可以在Microsoft Reference Page 上找到详细的操作方法。

但是,要点是安装 nuget pacakge Microsoft.AspNet.WebApi.Cors。您可以通过执行Install-Package Microsoft.AspNet.WebApi.Cors 来做到这一点。从那里,您将更新 WebApiConfig Register 方法以在顶部包含 config.EnableCors();

接下来,您将使用[EnableCors] 属性装饰您的控制器类。从那里,您应该能够发出跨域请求。

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2017-04-23
  • 1970-01-01
  • 1970-01-01
  • 2021-09-24
  • 1970-01-01
  • 2016-07-11
  • 2012-09-21
  • 1970-01-01
相关资源
最近更新 更多