使用Jquery调用WEB API和MVC时的跨域问题
使用Jquery请求API时,某些浏览器下会提示跨域问题:
XMLHttpRequest cannot load http://localhost:25833/api/values/1. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'null' is therefore not allowed access. XHR failed loading: GET "http://localhost:25833/api/values/1".
在WEB API中的解决方法:
1. 先设置API返回Json格式:
GlobalConfiguration.Configuration.Formatters.XmlFormatter.SupportedMediaTypes.Clear();
2. 增加跨域特性:
public class AllowCrossSiteJsonAttribute : ActionFilterAttribute { public override void OnActionExecuted(HttpActionExecutedContext actionExecutedContext) { if (actionExecutedContext.Response != null) actionExecutedContext.Response.Headers.Add("Access-Control-Allow-Origin", "*"); base.OnActionExecuted(actionExecutedContext); } }
3. 使用这个特性:
[AllowCrossSiteJson] public HttpResponseMessage Get(int id) { string json = "{\"result\":\"true\"}"; return new HttpResponseMessage { Content = new StringContent(json, System.Text.Encoding.UTF8, "application/json") }; }
在MVC中的解决方法是:
1. 创建一个特性:
public class AllowCrossSiteJsonAttribute : ActionFilterAttribute { public override void OnActionExecuting(ActionExecutingContext filterContext) { filterContext.RequestContext.HttpContext.Response.AddHeader("Access-Control-Allow-Origin", "*"); base.OnActionExecuting(filterContext); } }
2. 使用这个特性:
[AllowCrossSiteJson] public JsonResult YourMethod() { Test t = new Test { Name="aaa",Value="bbb"}; return Json(t,JsonRequestBehavior.AllowGet); }
使用Jquery访问代码如:
<script> $(document).ready(function(){ $("button").click(function(){ $.ajax({ type:"Get", url:"http://localhost:25833/Home/YourMethod", dataType: "json", success: function (result){ alert("数据:" + result.Name + "\n状态:" + status); } }); }); }); </script>
通过上述设置之后可以在IE、火狐、谷歌下面顺利访问。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· 周边上新:园子的第一款马克杯温暖上架
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?
· 使用C#创建一个MCP客户端