Ajax请求的跨域(CORS)问题
来源:互联网 发布:苏州相城区淘宝培训 编辑:程序博客网 时间:2024/05/18 01:11
什么是跨域?
简单的来说,出于安全方面的考虑,浏览器页面中的JavaScript无法访问其他服务器上的数据,即“同源策略”。而跨域就是通过某些手段来绕过同源策略限制,实现不同服务器之间的通信。
哪些情况允许跨域访问,哪些不允许?见下表,http://www.a.com/a.js访问以下URL的结果:
解决方法:
基本的解决思路就是利用filter在response中加入一个头"Access-Control-Allow-Origin",比如:
具体的解决方案:
1、自定义filter,在filter中给response加入header: ("Access-Control-Allow-Origin", "*")
/** * 防止浏览器缓存页面或请求结果 * @author XuJijun * */public class NoCacheFilter implements Filter {@Overridepublic void destroy(){}@Overridepublic void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain) throws IOException, ServletException { HttpServletResponse response = (HttpServletResponse)resp; response.setDateHeader("Expires", -1); response.setHeader("Cache_Control", "no-cache"); response.setHeader("Pragma", "no-cache"); response.setHeader("Access-Control-Allow-Origin", "*"); //允许跨域请求 chain.doFilter(req, resp);}@Overridepublic void init(FilterConfig arg0) throws ServletException{}}
3、https://github.com/eBay/cors-filter
或mvnrepository上搜索“cors filter”:http://mvnrepository.com/search?q=cors-filter
已经过时的解决方法:JSONP
什么是JSONP?
JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式,而JSONP(JSON with Padding)则是JSON 的一种“使用模式”,通过这种模式可以实现数据的跨域获取。
在同源策略下,在某个服务器下的页面是无法获取到该服务器以外的数据的,但img、iframe、script等标签是个例外,这些标签可以通过src属性请求到其他服务器上的数据。利用script标签的开放策略,我们可以实现跨域请求数据,当然,也需要服务端的配合。当我们正常地请求一个JSON数据的时候,服务端返回的是一串JSON类型的数据,而我们使用JSONP模式来请求数据的时候,服务端返回的是一段可执行的JavaScript代码。
(原创文章,转载请注明转自Clement-Xu的csdn博客:http://blog.csdn.net/clementad/article/details/47008803)
- Ajax请求的跨域(CORS)问题
- AJAX的跨域问题CORS解决方案
- CORS跨域请求问题
- AJAX与跨域请求CORS(JS)
- 启用CORS实现Ajax跨域请求
- 【AJAX】Ajax 跨域请求解决方案 - Using CORS
- cors跨域请求,重复提交问题
- 跨域请求问题 : jsonp & CORS
- cors跨域请求,重复提交问题
- Rails Gem开发(四)——rack-cors解决Ajax跨域问题(CORS)
- CORS解决ajax跨域问题
- CORS解决ajax跨域访问问题
- CORS解决ajax跨域问题
- cors解决ajax跨域问题
- 关于Ajax跨域问题之CORS
- CORS解决ajax跨域问题
- 跨域请求CORS
- AJAX跨域请求和CORS跨域资源共享
- java中选择组合或继承的依据
- windows下搞个python环境
- POJ
- struts2与JasperReport整合应用中解决PDF中文不显示问题(让我烦恼了半天)
- [Leetcode]-Unique Paths
- Ajax请求的跨域(CORS)问题
- STM8S---电源功耗管理之停机模式(halt)实现
- iPhone/iOS图片相关(读取、保存、绘制、其它相关)
- android 高版本函数actionBarSetup()要在低版本使用设置方法VERSION_CODES
- SQL Server 2008 清空删除日志文件(瞬间日志变几M)
- Android-IM架构设计
- PAT (Basic Level) Practise (中文)1027. 打印沙漏(20) C语言
- 最简单的基于FFmpeg的移动端例子:Android HelloWorld
- GIT 常用命令