.Net MVC4 被坑心得(十)解决jquery调用webapi时跨域问题
来源:互联网 发布:拉杆箱推荐 知乎 编辑:程序博客网 时间:2024/04/30 01:27
webapi之难用,之前讨论过,现在看看,如果一定要用,又要可以通过jquery跨域访问,该怎么办。
网上搜下,似乎没有太完美的方案,我们自己想想吧。
受网上方法启发,考虑自己写个MessageHandler,重写SendAsync方法只是这个类的处理过程,跟网上的完全不同。代码如下:
public class MessageHandler : DelegatingHandler { protected override Task<HttpResponseMessage> SendAsync(HttpRequestMessage request, CancellationToken cancellationToken) { //var Request = HttpContext.Current.Request; //string callbackFunc = Request.QueryString["jsoncallback"]; string callbackFunc = request.GetQueryNameValuePairs().FirstOrDefault(item => item.Key == "jsoncallback").Value; if (callbackFunc == null) { return base.SendAsync(request, cancellationToken); } else { return base.SendAsync(request, cancellationToken).ContinueWith<HttpResponseMessage>(t => { var response = t.Result; if (response.IsSuccessStatusCode) { response.Content = new StringContent( response.Content.ReadAsStringAsync() .ContinueWith<string>(tin => { StringBuilder sb = new StringBuilder(); sb.Append(callbackFunc); sb.Append("("); sb.Append(tin.Result); sb.Append(")"); return sb.ToString(); }) .Result); return response; } else { return response; } }); } } }其中,
//var Request = HttpContext.Current.Request;//string callbackFunc = Request.QueryString["jsoncallback"];和
string callbackFunc = request.GetQueryNameValuePairs().FirstOrDefault(item => item.Key == "jsoncallback").Value;可以达到完全相同的效果。
这时,只需在App_Start/WebApiConfig.cs里,Register方法中添加
config.MessageHandlers.Add(new MessageHandler());就可以了。
关于MessageHandler的知识,请参考http://www.cnblogs.com/r01cn/archive/2012/12/07/2807059.html
- .Net MVC4 被坑心得(十)解决jquery调用webapi时跨域问题
- .Net MVC4 被坑心得(七)WebApi种种
- .Net MVC4 被坑心得 (九) WebApi下的数据级缓存
- .Net MVC4 使用心得(六)WebApi Json和Xml,razor@{}
- .Net MVC4 被坑心得(七)filter 身份验证
- .net mvc4 webapi开发备注
- .net mvc4 Webapi参数绑定
- .Net MVC4 被坑心得 (八) 缓存,弹出提示
- .Net WebAPI解决跨域问题
- WCF WebAPI 新动向,并入ASP.net MVC4
- Asp.Net Mvc4 Webapi Request获取参数
- asp.net mvc4 webapi request获取参数
- asp.net mvc4 webapi request获取参数
- .net mvc4 Webapi Rest接口返回值
- ASP.NET WebAPI: Getting Started with MVC4 and WebAPI
- MVC4 WebAPI
- MVC4 WebAPI
- MVC4 WebAPI
- Word Ladder
- Catalan 数
- tomcat 启动运行指定类
- MFC实现文件夹的缩略图显示
- Project configuration is not up-to-date with pom.xml
- .Net MVC4 被坑心得(十)解决jquery调用webapi时跨域问题
- Hadoop 配置问题
- pdf2word(pdf转word)
- 【基础】java.math.Math类
- 英语词汇
- 项目问题小笔记
- 当数据库表损坏时的操作
- 行内元素和块集元素
- 编写Linux下Input设备的检测程序 .