ASP.NET MVC中实现JSONP
只是了解下新东西,Access-Control-Allow-Origin 不是所以浏览器都支持。
Refer:
跨域资源共享的10种方式:http://www.woiweb.net/10-cross-domain-methods.html
asp-net-mvc-returning-jsonp: http://stackoverflow.com/questions/758879/asp-net-mvc-returning-jsonpajax-cross-origin-http-request : http://www.oschina.net/translate/ajax-cross-origin-http-request
Code:
using System.Web.Mvc; /// <summary> /// JSONP 跨域 /// </summary> public class JsonpResult : JsonResult { public string Callback { get; set; } public JsonpResult() { JsonRequestBehavior = JsonRequestBehavior.AllowGet; } public override void ExecuteResult(ControllerContext context) { var httpContext = context.HttpContext; var callback = Callback; if (string.IsNullOrWhiteSpace(callback)) callback = httpContext.Request["callback"]; httpContext.Response.Write(callback + "("); base.ExecuteResult(context); // httpContext.Response.AppendHeader("Access-Control-Allow-Origin", "*"); httpContext.Response.Write(");"); } } // GET: /Jsonp/ public ActionResult Index() { var user = new { Name = "Irving", Age = "23" }; return new JsonpResult {Data = user }; }
XML配置
<system.webServer> <httpProtocol> <customHeaders> <add name="Access-Control-Allow-Origin" value="*" /> </customHeaders> </httpProtocol> </system.webServer>
JS
@{ ViewBag.Title = "Test CrossDomain"; } <h2> Test</h2> @section scripts{ <script type="text/javascript"> $(function () { $.ajax({ type: "GET", url: "http://localhost:89/Jsonp/Index", dataType: "jsonp", success: function (result) { console.log(result); }, error: function (XMLHttpRequest, textStatus, errorThrown) { console.log("Error: " + errorThrown); } }); }); //测试WCF跨域 $(function () { $.ajax({ type: "GET", url: "http://172.23.100.99/HotelService/Rest/GetAllPriceAndRmFlow/800822/2345678976543456789/2013-12-10/2013-12-11/0210B6/JSON", dataType: "jsonp", success: function (result) { console.log(result); }, error: function (XMLHttpRequest, textStatus, errorThrown) { console.log("Error: " + errorThrown); } }); }); </script> }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· .NET周刊【3月第1期 2025-03-02】
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· [AI/GPT/综述] AI Agent的设计模式综述