【问题标题】:AJAX Won't return value from web api c#AJAX不会从web api c#返回值
【发布时间】:2020-01-14 23:36:39
【问题描述】:

我有一个用 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的远程资源?

请赐教。

【问题讨论】:

  • 您需要启用 CORS 并设置允许的主机列表,这将允许您的后端接收来自不同主机的请求。
  • @Sahil 帮助很大,谢谢:)
  • @Rumpelstinsk 明白了.. 现在我明白了

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


【解决方案1】:

当我们使用 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();
        }
    }

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

【讨论】:

  • 谢谢!它工作......很好的解决方案,没有 nuget 包
猜你喜欢
  • 2023-04-09
  • 2023-02-10
  • 2016-08-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-11-07
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多