ajax跨域解决方案以及spring mvc中的支持
来源:互联网 发布:linux的java环境变量 编辑:程序博客网 时间:2024/05/18 18:00
ajax跨域问题主要有有三种解决方法
1、使用代理将需要跨域的地址挂载到本域下面
2、使用jsonp
3、使用Access-Control-Allow-Origin响应头
第一种方案需要引入代理服务器,生产环境中一般都会用nginx或者apache http做负载均衡,可以很容易实现,自己的开发环境一般都没有这东西,需要引入,增加了复杂性
第二种方案需要修改返回的数据,跨域请求的响应需要封装成callback('{a:''b"}')的格式
第三种是W3C为解决跨域问题引入的新特性(好像是HTML5引入的),目前大部分教新的浏览器都支持,只需要在响应头中加入Access-Control-Allow-Origin就可实现跨域
springmvc4.2开始提供开箱即用的跨域支持,只需要在mvc的配置文件中加入以下代码,详细的配置参考官方文档
<mvc:annotation-driven/>
<mvc:cors>
<mvc:mapping path="/**"/>
</mvc:cors>
注意一定要加上<mvc:annotation-driven/>,之前用的是自定义的requestmapping,没有使用<mvc:annotation-driven/>导致跨域失败,调试后才发现,如果没有<mvc:annotation-driven/>,mvc获取不到cors的配置信息
默认情况下,ajax跨域请求是不会携带cookies的,有时候我们需要cookies,这时候就要加入跨域认证支持
<mvc:annotation-driven/>
<mvc:cors>
<mvc:mapping path="/rest/**"
allowed-origins="http://localhost"
allow-credentials="true"/>
</mvc:cors>
allow-credentials=true代表开启跨域认证,这样会增加一个响应头
allowed-origins代表可以跨域请求的域名,这里需要注意,如果加入了跨域认证支持,allowed-origins必须是明确的域名,不能使用“*”通配符
浏览器收到此响应头。同时客户端也要做设置,需要将XMLHttpRequest的withCredentials标志设置为true
xhr.withCredentials=true
jquery下为
url: 'data/tree.json',
xhrFields: {
withCredentials: true
}
});
下次请求就会将cookies带上
- ajax跨域解决方案以及spring mvc中的支持
- Spring MVC中的session解决方案
- Spring MVC 新增跨域支持
- ajax跨域问题以及解决方案
- ajax跨域问题以及解决方案
- ajax 跨域请求+spring mvc篇
- Spring Web MVC中的页面缓存支持
- Spring Web MVC中的页面缓存支持
- 在Spring MVC使用ajax中的success
- 扩展Spring MVC用以支持Controller对Ajax的处理
- 使用spring mvc+ajax 响应报406错误解决方案
- AngularJS Ajax请求与Spring MVC登录超时解决方案
- 前后端spring-mvc跨域访问解决方案
- jQuery中Ajax+Spring MVC实现跨域请求
- jQuery中Ajax+Spring MVC实现跨域请求
- Ajax+Spring MVC实现跨域请求(JSONP)
- Ajax+Spring MVC实现跨域请求(JSONP)
- spring mvc ajax jsonp 跨域请求 返回值 配置
- 文章标题
- 金九银十北漂记第4篇:面试方欣科技
- 里程计及基于双目视觉的视觉里程计(stereo visual odometry)
- 解决walle报错:宿主机代码检出检测出错,请确认svn用户名密码无误
- java获取时间的格式
- ajax跨域解决方案以及spring mvc中的支持
- 基于MVC,实现简单的书籍信息管理,其中,模型 (M) 采用一般的JavaBean、视图 (V)采用JSP、控制 (C) 采用Servlet实现。另外,对于视图部分的JSP中,需要提供两种版本,即一般
- 【Android】Android.mk与Application.mk官网讲解
- 链表排序--冒泡法
- ShaderLab基础(阴影面剔除)
- JVM内存管理及GC机制
- sparksql 过滤出null值
- error: src refspec origin does not match any.问题解决
- list管理对象