AJAX不会从Web API C返回值

时间:2019-09-13 05:29:55

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

我有一个用C#创建的简单Web api,该方法返回了一个字符串

    public string Get()
    {
        return "Welcome Web API online";
    }

我现在通过javascript调用它,它成功打入了doe,但是它不会返回任何数据,它始终属于错误功能,

var url = "https://localhost:44381/api/accounts";

$.ajax({
    type: 'GET',
    dataType: 'json',
    url: url,
    success: function (data) {
        console.log(data);
    },
    error: function (data) { console.log(data); }
});

检查控制台日志,它显示:

跨域请求被阻止:“同一个来源策略”不允许读取https://localhost:44381/api/accounts处的远程资源吗?

请赐教。

1 个答案:

答案 0 :(得分:3)

当我们使用Ajax,angular等访问具有不同起源的URL时,则需要在不同起源侧处理CORS(跨域请求共享)。 在您的Web api项目中的代码下面过去。在 Global.asax.cs 文件

protected void Application_BeginRequest(object sender, EventArgs e)
    {
        HttpContext.Current.Response.AddHeader("Access-Control-Allow-Origin", "*");

        if (HttpContext.Current.Request.HttpMethod == "OPTIONS")
        {
            HttpContext.Current.Response.AddHeader("Access-Control-Allow-Methods", "GET, POST, PUT, DELETE");
            HttpContext.Current.Response.AddHeader("Access-Control-Allow-Headers", "Content-Type, Accept");
            HttpContext.Current.Response.AddHeader("Access-Control-Max-Age", "1728000");
            HttpContext.Current.Response.End();
        }
    }

我对你有帮助。对我有用。