架构师_程序员_码农网

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

搜索
查看: 20268|回复: 0

[WebAPI] webapi不支持跨域请求的解决方法

[复制链接]
发表于 2016-8-9 17:24:21 | 显示全部楼层 |阅读模式
QQ截图20160809172050.jpg

以前,遇到过控制器的跨域请求,然后,知道在web.config里面加上几句话就可以了。。。。

这次在web.config加上如下:

  1. <system.webServer>
  2.     <httpProtocol>
  3.       <customHeaders>
  4.         <add name="Access-Control-Allow-Origin" value="*" />
  5.         <add name="Access-Control-Allow-Headers" value="*" />
  6.         <add name="Access-Control-Allow-Methods" value="GET, POST, PUT, DELETE" />
  7.         <add name="Access-Control-Request-Methods" value="GET, POST, PUT, DELETE, OPTIONS" />
  8.         <!--允许请求的http 动作-->
  9.       </customHeaders>
  10.     </httpProtocol>
复制代码


发现,还是不允许跨域请求,why?????是不是webapi和控制器不一样啊,

可能是真的不一样,解决方法如下:

  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Web;
  5. using System.Web.Http.Filters;

  6. namespace SUI.Controllers
  7. {
  8.     public class CrossSiteAttribute : ActionFilterAttribute
  9.     {
  10.         private const string Origin = "Origin";
  11.         private const string AccessControlAllowOrigin = "Access-Control-Allow-Origin";
  12.         private const string originHeaderdefault = "*";
  13.         public override void OnActionExecuted(HttpActionExecutedContext actionExecutedContext)
  14.         {
  15.             actionExecutedContext.Response.Headers.Add(AccessControlAllowOrigin, originHeaderdefault);
  16.         }
  17.     }
  18. }
复制代码



webapi如下:

  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Net;
  5. using System.Net.Http;
  6. using System.Web.Http;

  7. namespace SUI.Controllers
  8. {
  9.     public class OpenController : ApiController
  10.     {
  11.         [CrossSiteAttribute]
  12.         public Test Get(string keyword)
  13.         {
  14.             return new Test
  15.             {
  16.                 keyword = keyword,
  17.                 age = 20
  18.             };
  19.         }
  20.     }

  21.     public class Test {
  22.         public string keyword { get; set; }

  23.         public int age { get; set; }
  24.     }
  25. }
复制代码

QQ截图20160809172713.jpg
成功解决了!




上一篇:C# 中2,10,16进制及其ASCII码之间转化
下一篇:c# post数据的时候压缩数据
码农网,只发表在实践过程中,遇到的技术难题,不误导他人。
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

免责声明:
码农网所发布的一切软件、编程资料或者文章仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。如有侵权请邮件与我们联系处理。

Mail To:help@itsvse.com

QQ|小黑屋|架构师 ( 鲁ICP备14021824号-2 )|网站地图

GMT+8, 2026-9-1 21:45

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表