WebApi 自定义过滤器实现支持AJAX跨域的请求
我想关于此类话题的文章,大家一搜铺天盖地都是,我写此文的目的,只是对自己学习过程的记录,能对需要的朋友有所帮助,也百感荣幸!!!废话不多说,直接上代码!
客户端:很简单的AJAX请求
<html>
<head>
<title id='Description'>WebApi支持Ajax跨域</title>
<script src="js/jquery-1.11.1.min.js"></script>
<script type="text/javascript">
$(function () { $.ajax({
type: "POST",
url: "https://192.168.1.9/api/values/get", success: function (persons) { alert('persons'); },
error: function () {
alert('fail');
}
}); });
</script>
</head>
<body class='default'>
</body>
</html>
WebApi服务端:
1.自定义EnableCorsAttribute类,继承于System.Web.Http.Filters.ActionFilterAttribute ,重写OnActionExecuted方法如下
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Http.Filters; namespace ResourceServer
{
public class EnableCorsAttribute : System.Web.Http.Filters.ActionFilterAttribute
{ public override void OnActionExecuted(HttpActionExecutedContext actionExecutedContext)
{
if (!actionExecutedContext.Response.Headers.Contains("Access-Control-Allow-Origin"))
{
actionExecutedContext.Response.Headers.Add("Access-Control-Allow-Origin", "*");
}
if (!actionExecutedContext.Response.Headers.Contains("Access-Control-Allow-Headers"))
{
actionExecutedContext.Response.Headers.Add("Access-Control-Allow-Headers", "Content-Type,Accept");
}
if (!actionExecutedContext.Response.Headers.Contains("Access-Control-Allow-Methods"))
{
actionExecutedContext.Response.Headers.Add("Access-Control-Allow-Methods", "GET,POST");
}
}
}
}
2.上一部完成后,也已经大功告成,此步直接在想支持跨域Controller的Action的方法上添加标记,就能实现AJAX的跨域调用了。:)
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Net.Http;
using System.Web.Http;
using System.Web.OData;
using Newtonsoft.Json;
using WebApiThrottle; namespace ResourceServer.Controllers
{
public class People {
public string Name { get; set; }
public int Age { get; set; } } public class ValuesController : ApiController
{ public static List<People> li = new List<People>{ new People{ Name="李刚", Age=},
new People{ Name="王六", Age=} };
// GET api/<controller>
[EnableCors]//此特性添加就支持跨域访问了
[HttpPost]
[HttpGet]
[EnableQuery()]
[EnableThrottling(PerMinute=)]
public List<People> Get()
{
return li;
} }
}
WebApi 自定义过滤器实现支持AJAX跨域的请求的更多相关文章
- 支持ajax跨域调用的WCF搭建示例
支持ajax 跨域调用的WCF搭建 1.新建一个"ASP.NET空Web应用程序"项目. 2.新建一个“WCF服务(支持ajax)”. 3.修改WCFAjaxService.svc ...
- 支持Ajax跨域访问ASP.NET Web Api 2(Cors)的简单示例教程演示
随着深入使用ASP.NET Web Api,我们可能会在项目中考虑将前端的业务分得更细.比如前端项目使用Angularjs的框架来做UI,而数据则由另一个Web Api 的网站项目来支撑.注意,这里是 ...
- SpringBoot支持AJAX跨域请求
利用注解的方式解决AJAX请求跨域问题 1.编写一个支持跨域请求的 Configuration - 第一种方式 - CorsConfig.java import org.springframework ...
- 本地调试 Chrome支持Ajax跨域
Ajax本身是不支持跨域的,跨域问题其实很简单,通过浏览器的相应设置可以完成两个不同的服务器或两个不同服务下的项目互相访问.希望大家给予评价及投票. 方法/步骤 1 首先谷歌快捷方式上右击,在下拉列表 ...
- ajax跨域简单请求与复杂请求
开发网站时经常会用到跨域资源共享(简称cors,后面使用简称)来解决跨域问题,但是在使用cors的时候,http请求会被划分为两类,简单请求和复杂请求,而这两种请求的区别主要在于是否会触发cors预检 ...
- IIS 支持 ajax 跨域
第一,首先要浏览器支持. Firefox和Chrome都支持了. IE10 也支持. IE8,9 需要使用其他方式才能支持 第二, 加上HTTP header. IIS 7 的方式比较容易. 就在we ...
- 通过添加filter过滤器 彻底解决ajax 跨域问题
1.在web.xml添加filter <filter> <filter-name>contextfilter</filter-name> <filter-cl ...
- 基于java过滤器实现的ajax跨域解决方案
http://software.dzhuvinov.com/cors-filter-configuration.html
- 【笔记】Asp.Net WebApi对js POST带参数跨域请求的支持方案
先说下需求:在原来的WebApi项目中增加对js跨域的请求支持,请求方式:以POST为主,webapi路由规则根据原项目需求修改如下: public static void Register(Http ...
随机推荐
- 【转】64位win7硬盘安装64位ubuntu 13.04
原文网址:http://www.cnblogs.com/jiangz/p/3751617.html 最近本来是准备通过升级的方式把ubuntu从12.04升级到12.10再升级到13.04的,但是升级 ...
- [VBA]发布一个计算桩号之差的Excel自定义函数(VBA)
这是一个可以计算桩号之差(也就是得到长度)的Excel(或WPS)扩展函数,可以减少工程师在统计工程量时的工作量. 该函数具有一定的通用性.可以在MS Office和金山WPS上使用. 文末会给出使用 ...
- 黑马程序员_Java面向对象3_多态
5.面向对象_多态 多态定义:某一种事物存在的多种形态. 例:动物中猫,狗. 猫这个对象对应的类型是猫类型. 猫 x = new 猫(); 同时猫也是动物的一种,也可以把猫称为动物. 动物 y = n ...
- 读书笔记:java特种兵(上)
----看着样章,感觉还不错,就买下来了,书先不论好坏,悟到了一个道理,东西没有好与坏,只有适不适合. 第一章:想了解编译器是如何优化程序的,当年的编译原理没有学好啊
- java 读取mysql库表数据
import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import ...
- Linux查看网络即时网速
sar -n DEV 1 100 1代表一秒统计并显示一次 100代表统计一百次 使用ntop等工具,就更方便简单了,不过这个更灵活 P.S. sar在sysstat包 来源:http://www.c ...
- transition过渡的趣玩
本例中将三张图(来自网络)进行堆叠,鼠标悬停触发.附有源代码
- 用sp_change_users_login消除Sql Server的孤立用户
异常详细信息: System.Data.SqlClient.SqlException: 拒绝了对对象 'zwj_EnterpriseActivities' (数据库 'Ntours',架构 'dbo' ...
- Oracle - SQL 错误: ORA-00917: 缺失逗号
ORACLE SQL语句中int型插入数据库时,不要加引号.
- oracle常用自定义函数集合
1.Oracle 判断值是否为数字的函数CREATE OR REPLACE FUNCTION ISNUMBER(MyStr VARCHAR2) RETURN NUMBERIS STR VARCHAR ...