博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C# ABP 允许跨域请求
阅读量:6759 次
发布时间:2019-06-26

本文共 2715 字,大约阅读时间需要 9 分钟。

备注:无论有没有安装 apb zero模块,都可以使用本文的跨域

 

首先配置Web Api:

1. 在Web API项目下,安装包

Install-Package Microsoft.AspNet.WebApi.Cors

2. 然后在 WebApiModule 的方法Initialize中,添加下面代码:(代码最好在ConfigureSwaggerUi的上面)

//设置跨域            var cors = new EnableCorsAttribute("*", "*", "*");            cors.SupportsCredentials = true;            GlobalConfiguration.Configuration.EnableCors(cors);

 

上面配置了Web Api的跨域,然后我们想要在Web MVC中也支持跨域。下面我们给出登录模块支持跨域的例子。

 

然后配置Web MVC项目,让登录支持跨域:

1.我们创建一个Attribute类,叫做AcceessOriginalAttribute,如下:

using System;using System.Collections.Generic;using System.Configuration;using System.Linq;using System.Web;using System.Web.Mvc;namespace MagicQCes.Web.Filters{    public class AcceessOriginalAttribute : ActionFilterAttribute, IExceptionFilter    {
public void InternalExuteAccessControle(HttpResponseBase response, HttpRequestBase request) { var header = response.Headers; var requestHeader = request.Headers; header.Set("Access-Control-Allow-Origin", requestHeader["Origin"] ?? "http://" + requestHeader["Host"]); header.Set("Access-Control-Allow-Methods", "POST, GET, OPTIONS, DELETE"); header.Set("Access-Control-Max-Age", "3600"); header.Set("Access-Control-Allow-Headers", "*"); header.Set("Access-Control-Allow-Credentials", "true"); } public override void OnActionExecuting(ActionExecutingContext filterContext) { base.OnActionExecuting(filterContext); } public override void OnActionExecuted(ActionExecutedContext filterContext) { InternalExuteAccessControle(filterContext.HttpContext.Response, filterContext.HttpContext.Request); base.OnActionExecuted(filterContext); } public override void OnResultExecuting(ResultExecutingContext filterContext) { base.OnResultExecuting(filterContext); } public override void OnResultExecuted(ResultExecutedContext filterContext) { base.OnResultExecuted(filterContext); } public void OnException(ExceptionContext filterContext) { filterContext.Result = new JsonResult() { Data = new { Succeed = 0, Message = filterContext.Exception.Message }, JsonRequestBehavior = JsonRequestBehavior.AllowGet }; filterContext.ExceptionHandled = true; } }}

 

2.然后,我们在AccountController中,的Login方法中,添加上面属性,如下:

[AcceessOriginal]        public async Task
Login(string usernameOrEmailAddress, string Password)

 

这样,登录也支持跨域了。

 

 

可以关注本人的公众号,多年经验的原创文章共享给大家。

posted on
2017-04-25 11:29 阅读(
...) 评论(
...)

转载于:https://www.cnblogs.com/alunchen/p/6761146.html

你可能感兴趣的文章
第十三周项目2-成绩处理
查看>>
dede调用img图片
查看>>
Session中放错误提示JSP上获取
查看>>
Folding Views
查看>>
cookie注入&中转注入笔记
查看>>
生产环境linux服务器系统安全配置
查看>>
我的友情链接
查看>>
MySql中 delimiter 详解
查看>>
浏览器history操作实现一些功能
查看>>
你那么喜欢看”干货“,是因为你根本不想下功夫。
查看>>
软件测试用例
查看>>
python mysql 单表查询 多表查询
查看>>
android handler概念解释
查看>>
eclipse代码左虚线对齐设置
查看>>
插入排序的Java代码实现
查看>>
Spring整合Web开发
查看>>
在SContruct中编译.c
查看>>
让ubuntu开启ssh服务以及让vi/vim正常使用方向键与退格键
查看>>
10.两个链表的交叉
查看>>
Visio Premium 2010密钥+破解激活方法
查看>>