C# ABP 允许跨域请求
备注:无论有没有安装 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", "");
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 = , Message = filterContext.Exception.Message },
JsonRequestBehavior = JsonRequestBehavior.AllowGet
};
filterContext.ExceptionHandled = true;
}
}
}
2.然后,我们在AccountController中,的Login方法中,添加上面属性,如下:
[AcceessOriginal]
public async Task<JsonResult> Login(string usernameOrEmailAddress, string Password)
这样,登录也支持跨域了。
可以关注本人的公众号,多年经验的原创文章共享给大家。

C# ABP 允许跨域请求的更多相关文章
- Laravel中的ajax跨域请求
最近接触Laravel框架ajax跨域请求的过程中遇到一些问题,在这里做下总结. 一开始发起ajax请求一直报500错误,搜索相关资料后发现Laravel要允许跨域请求可以加入Cors中间件,代码如下 ...
- 跨域请求——WebClient通过get和post请求api
AJAX不可以实现跨域请求,经过特殊处理才行.一般后台可以通过WebClient实现跨域请求~ //get 请求 string url = string.Format("htt ...
- 原生js封装ajax,实现跨域请求
描述: 需要ajax跨域请求,用cors跨域方案.服务端设置: header('Access-Control-Allow-Origin: http://front.ls-la.me'); header ...
- 关于试用jquery的jsonp实现ajax跨域请求数据的问题
我们在开发过程中遇到要获取另一个系统数据时,就造成跨域问题,这就是下文要说的解决办法: 先我们熟悉下json和jsonp的区别: 使用AJAX就会不可避免的面临两个问题,第一个是AJAX以何种格式来交 ...
- 【JavaScript】--重点解析之跨域请求
JSON JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式. JSON是用字符串来表示Javascript对象,例如可以在django中发送一个JSON格式 ...
- 利用CORS实现跨域请求(转载)
跨域请求一直是网页编程中的一个难题,在过去,绝大多数人都倾向于使用JSONP来解决这一问题.不过现在,我们可以考虑一下W3C中一项新的特性--CORS(Cross-Origin Resource Sh ...
- Ajax_05之跨域请求
1.跨域请求: Cross Domain Request:跨域名的HTTP请求,浏览器从某个域名下的资源访问了另一域名下的另一资源(协议.域名或是端口号不同): ①浏览器允许跨域请求的情形: < ...
- 浅谈linux 下,利用Nginx服务器代理实现ajax跨域请求。
ajax跨域请求对于前端开发者几乎在任何一个项目中都会用到,众所周知,跨域请求有三种方式: jsonp; XHR2 代理: jsonp: 这种应该是开发中是使用的最多的,最常见的跨域请求方法,其实aj ...
- 解决ajax跨域请求 (总结)
ajax跨域请求,目前已用几种方法实现: 1)用原生js的xhr对象实现. var url="http://freegeoip.net/json/" ...
随机推荐
- [php-cookie] cookie 请求跨域,如何共享
cookie 请求跨域的问题, 假设我有两个域名,一个 m.example.com,另一个是 www.example.com . 那么我需要如何设置 cookie 才可以在这两个域名都实现共享呢? / ...
- unigui发展路线图
unigui发展路线图 易博龙收购了SENCHA EXT JS和UNIGUI,随之官方发布了UNIGUI的发展路线图. UNIGUI是开发WEB桌面和手机移动应用的利器. UNIGUI将支持以下新特性 ...
- Delphi7调用DelphiXE编写的DLL问题
http://bbs.csdn.net/topics/380045353 用DelphiXE在WIN2008下编写一个访问WebServices的DLL ws.dll,只有一个输出函数,如下: fun ...
- 配置Info.plist (设置状态栏样式、自定义定位时系统弹出的提示语、配置3DTouch应用快捷菜单)
一.概述 iOS中很多功能需要配置Info.plist才能实现,如设置后台运行.支持打开的文件类型.自定义访问隐私内容时弹出的提示等.了解Info.plist中各字段及其含义,可以访问苹果开发网站相关 ...
- 简谈Entity Framework的优缺点
Entity Framework简介 Entity Framework的全称为 ADO.NET Entity Framework ,简称为EF, 是微软以ADO.NET为基础发展出来的实体框架,早期被 ...
- Webapi文件上传
1/ multipart/form-data方式 using Abp.UI; using Abp.Web.Models; using System; using System.Collections ...
- 【转】PowerDesigner code、name显示设置 及 同时显示办法
原文地址:http://blog.csdn.net/fy_hanxu/article/details/52468927 菜单->Tool->Model Options->Name C ...
- 【有新题】OCP 12c 062出现大量新考题-14
choose two You plan to upgrade your Oracle Database 9i to Oracle Database 12c. Which two methods can ...
- Mac使用brew安装nginx,并解决端口访问权限问题
1.安装 brew install nginx 2.修改配置文件 sudo vi /usr/local/etc/nginx/nginx.conf 修改默认的8080端口为80 修改日志文件地方 err ...
- ubuntu下nodejs源码安装
1.从github选择下载自己要安装的nodejs版本,https://github.com/nodejs/node/releases,我下载的版本是node-9.11.2.tar.gz 2.解压no ...