我有一个用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处的远程资源吗?
请赐教。
答案 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();
}
}
我对你有帮助。对我有用。