ASP.NET MVC 实现跨域请求的两种形式
2015-06-02 13:51
731 查看
一、使用jsonp请求
二、跨域资源共享
相比 JSONP 请求,跨域资源共享要简单许多,也是实现跨域 AJAX 请求的首选。不过在 IE9 还没有对该技术的支持,FireFox 就已经支持了
$.ajax({ type: "GET", url: "http://10.174.1.1/Home/Test?callback=?", data: { id: "1" }, dataType: "jsonp", jsonp: "callback", success: function (data) { alert(data); }, error: function (XMLHttpRequest, textStatus, errorThrown) { alert(errorThrown); } });
//Jsonp跨域访问 [HttpGet] public ActionResult Test() { string vid = Request.QueryString["id"]; string callback = Request["callback"]; return new JsonpResult<object>(Member.FirstOrDefault(u => u.id == id).Name, callback); } public class JsonpResult<T> : ActionResult { public T Obj { get; set; } public string CallbackName { get; set; } public JsonpResult(T obj, string callback) { this.Obj = obj; this.CallbackName = callback; } public override void ExecuteResult(ControllerContext context) { var js = new System.Web.Script.Serialization.JavaScriptSerializer(); var jsonp = this.CallbackName + "(" + js.Serialize(this.Obj) + ")"; context.HttpContext.Response.ContentType = "application/json"; context.HttpContext.Response.Write(jsonp); } }
二、跨域资源共享
相比 JSONP 请求,跨域资源共享要简单许多,也是实现跨域 AJAX 请求的首选。不过在 IE9 还没有对该技术的支持,FireFox 就已经支持了
$.ajax({ type: "GET", url: "http://10.174.1.1/Home/Test2", data: { id: "1" }, dataType: "json", success: function (data) { alert(data); }, error: function (XMLHttpRequest, textStatus, errorThrown) { alert(errorThrown); } });
//跨站资源共享实现跨站AJAX请求 public ActionResult Test2() { string vid = Request.QueryString["id"]; HttpContext.Response.AppendHeader("Access-Control-Allow-Origin", "*"); return Json(Member.FirstOrDefault(u => u.id == id).Name, JsonRequestBehavior.AllowGet); }
相关文章推荐
- ajax请求aspx页面
- Asp.Net 文件加解密
- Raspberry Pi2 Model B下Tl-WN725N v2.0无线网卡驱动
- AspNet MVC4 教学-22:Asp.Net MVC4 Partial View 技术快速应用Demo
- Asp.Net MVC3 简单入门详解过滤器Filter(身份验证、缓存、防盗链、国际化等)
- Asp.Net 用户验证(自定义IPrincipal和IIdentity)
- ASP.NET MVC公共模板、节、分部视图等
- ASP.NET MVC异步加载分部视图
- Asp.Net MVC之ViewData字典与ViewModel模式
- ASP.NET MVC中ActionResult返回值
- ASP.NET MVC Razor视图引擎攻略
- 在ASP.NET MVC中实现大文件异步上传
- 安装了VS2010 sp1 后再安装ASP.NET MVC 3.0的问题(Final Result: Installation failed with error code: (0x80070643), "安装时发生严重错误 " (Ela)
- ASP.NET MVC部署到IIS
- 关于asp.net中页面事件加载的先后顺序(转)
- ASP.NET MVC中Controller与View之间的数据传递总结
- 基于ASP.NET4开发的MVC2网站在WINDOWS2003服务器上的布署
- ASP.NET MVC网站路由配置
- ASP.NET MVC HtmlHelper
- Asp.net MVC2学习笔记8-数据验证(前后台统一验证)