官方推荐方式:

http://spring.io/blog/2015/06/08/cors-support-in-spring-framework

方式1:

    $.ajax({  //前台:常规写法。注意:如果用注解dataType别写成了JSONP 要写成JSON 两都有区别。一个是协议一个是数据格式(个人理解)
url:'http://localhost:8082/cors/corsTest.do',
data:{},
dataType:'json',
type:'post',
success:function(data){
alert(data.abc);
}
})
// 后台代码 。。。 添加注解即可。CrossOrigin(这里可能配置多个地址。不配置默认全部 可以配置到controller上面。也可以配置方法上。都配置他会自动合并)
   @SuppressWarnings("unchecked")
@RequestMapping(value="/corsTest",method = RequestMethod.POST)
@ResponseBody
@CrossOrigin
public Object corsTest(){
Map map = new HashMap();
map.put("abc", 123);
return map;
} 方式2: $.ajax({ //不采用注解方法,手动拼一个callback字符串。
url:'http://localhost:8082/cors/corsTest1.do',
data:{},
async:false,
dataType:'jsonp',
jsonpCallback:"callback",
type:'post',
success:function(data){
alert(data.abc);
}
})     
     后台代码:
  @RequestMapping(value="/corsTest1")
@ResponseBody
public Object corsTest1(){
Map map = new HashMap();
map.put("abc", 456);
return "callback("+JSON.toJSONString(map)+")";
} 方式3: 即不采用注解也不采用手动拼接字符串的方式 。就是用拦截器方式; public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
try {
HttpServletRequest httpRequest = (HttpServletRequest) request;
HttpServletResponse httpResponse = (HttpServletResponse) response; // 跨域
String origin = httpRequest.getHeader("Origin");
if (origin == null) {
httpResponse.addHeader("Access-Control-Allow-Origin", "*");
} else {
httpResponse.addHeader("Access-Control-Allow-Origin", origin);
}
httpResponse.addHeader("Access-Control-Allow-Headers", "Origin, x-requested-with, Content-Type, Accept,X-Cookie");
httpResponse.addHeader("Access-Control-Allow-Credentials", "true");
httpResponse.addHeader("Access-Control-Allow-Methods", "GET,POST,PUT,OPTIONS,DELETE");
if ( httpRequest.getMethod().equals("OPTIONS") ) {
httpResponse.setStatus(HttpServletResponse.SC_OK);
return;
}
chain.doFilter(request, response);
} catch (Exception e) {
logger.error("Exception in crossFilter", e);
throw e;
}
}
然后在web.xml配置一下就行了。
<filter>
<filter-name>crossDemoFilter</filter-name>
<filter-class>com.shanreal.filter.crossFilter</filter-class>
</filter> <filter-mapping>
<filter-name>crossDemoFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
还有一种就是通过nginx配置。学习中

spring mvc 跨域问题。。。解决的更多相关文章

  1. 关于Spring MVC跨域

    1.Sping MVC 3.X跨域 关于跨域问题,主要用的比较多的是cros跨域. 详细介绍请看https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Ac ...

  2. spring mvc跨域设置(全局)

    //--------------第一步//spring 5版本全局配置方式 @Configuration @EnableWebMvc public class SpringMvcBeans imple ...

  3. spring mvc 跨域请求处理——spring 4.2 以上

    Controller method CORS configuration You can add to your @RequestMapping annotated handler method a  ...

  4. spring mvc跨域(ajax post json)--filter方案

    @RequestMapping(value = "/login.do",method = RequestMethod.POST) public Message login(Http ...

  5. spring mvc跨域(post)--filter方案

    import javax.servlet.*; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.Http ...

  6. Ajax跨域访问解决办法

    方法1. jsonp实现ajax跨域访问示例 jsp代码: <body> <input type="button" onclick="testJsonp ...

  7. spring boot跨域设置

    定义 跨域是指从一个域名的网页去请求另一个域名的资源 跨域背景 限制原因 如果一个网页可以随意地访问另外一个网站的资源,那么就有可能在客户完全不知情的情况下出现安全问题 为什么要跨域 公司内部有多个不 ...

  8. spring boot跨域请求访问配置以及spring security中配置失效的原理解析

    一.同源策略 同源策略[same origin policy]是浏览器的一个安全功能,不同源的客户端脚本在没有明确授权的情况下,不能读写对方资源. 同源策略是浏览器安全的基石. 什么是源 源[orig ...

  9. SpringBoot 优雅配置跨域多种方式及Spring Security跨域访问配置的坑

    前言 最近在做项目的时候,基于前后端分离的权限管理系统,后台使用 Spring Security 作为权限控制管理, 然后在前端接口访问时候涉及到跨域,但我怎么配置跨域也没有生效,这里有一个坑,在使用 ...

随机推荐

  1. gcc与g++的一些关系

    Gcc 简介Linux系统下的gcc(GNU C Compiler)是GNU推出的功能强大.性能优越的多平台编译器,是GNU的代表作品之一.Gcc是可以在多种硬体平台上编译出可执行程序的超级编译器,其 ...

  2. 无需AutoCAD,用C#生成DWG文件

    是一个类库:Teigha.NET for .DWG 利用它就可以在无需安装AutoCAD软件的情况下,生成.读取DWG文件,适合那些导入导出的场合. Teigha曾用名OpenDWG .DWGdire ...

  3. centos 磁盘清理 /dev/vda1系统盘满了

    df   -h   检查一台服务器磁盘使用空间,发现磁盘已经使用了100% 思路是: 1.cd /usr   当然这里不一定是/usr目录,最好是cd到 根目录再执行下一步 2.du -sh * 看哪 ...

  4. pytest.10.使用fixture参数化测试预期结果

    From: http://www.testclass.net/pytest/test_api_with_expected_result/ 背景 接上一节v2ex网站的查看论坛节点信息的api. 我们在 ...

  5. pandas的离散化,面元划分

    pd.cut pandas.cut(x, bins, right=True, labels=None, retbins=False, precision=, include_lowest=False) ...

  6. Windump教程-参数介绍

    1 应用 Windump是tcpdump的Windows版本,主要的参数如下: -D 列出所有的接口 -i interface 指定用于抓包的接口 -c packetcount 指定抓包的个数 -w ...

  7. Hadoop概念学习系列之谈hadoop/spark里为什么都有,键值对呢?(四十)

    很少有人会这样来自问自己?只知道,以键值对的形式处理数据并输出结果,而没有解释为什么要以键值对的形式进行. 包括hadoop的mapreduce里的键值对,spark里的rdd里的map等. 这是为什 ...

  8. Hadoop概念学习系列之搭建(windows)Eclipse/MyEclipse远程操作(Linux上)hadoop2.2.0/hadoop2.6.0 出错集(三十五)

    本博文,是在http://blog.csdn.net/u010911997/article/details/44099165  的基础上.感谢原博主! 问题1:在DFS Lcation 上不能多文件进 ...

  9. MySQL数据库解决乱码 latin1 转 gbk

    latin1 也是一种编码,但是有时候它不适合我们正常的使用,所以我需要把它转成gbk编码. 查询数据库编码 show variables like 'character%'; 修改配置文件 my.i ...

  10. console输出选择器的问题

    html代码: <input type="text" class="loginInput loginPwText gray" value="密码 ...