比如http://serverIp:8051/test/index.html页面需要需要访问本地启动的Server,http://localhost:8089/api/heren-plugin/event,这时会存在跨域的问题,解决方案有jsonp和iframe等,但jsonp只能使用get方法调用,没有post,在大数据传输时get方法显然不适合。最好的办法就是在目标域的项目中写一个Filter,如下:
public class HerenCorsFilter implements Filter {
@Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
servletResponse.setCharacterEncoding("UTF-8");
HttpServletResponse res = (HttpServletResponse) servletResponse;
res.addHeader("Access-Control-Allow-Origin", "*");
res.addHeader("Allow-Control-Allow-Methods", "POST,GET,OPTIONS");
res.addHeader("Access-Control-Allow-Credentials", "true");
res.addHeader("Access-Control-Allow-Headers", "Content-Type,X-Requested-With");
res.addHeader("Access-Control-Max-Age", "600000");
filterChain.doFilter(servletRequest, res);
}
}
@Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
servletResponse.setCharacterEncoding("UTF-8");
HttpServletResponse res = (HttpServletResponse) servletResponse;
res.addHeader("Access-Control-Allow-Origin", "*");
res.addHeader("Allow-Control-Allow-Methods", "POST,GET,OPTIONS");
res.addHeader("Access-Control-Allow-Credentials", "true");
res.addHeader("Access-Control-Allow-Headers", "Content-Type,X-Requested-With");
res.addHeader("Access-Control-Max-Age", "600000");
filterChain.doFilter(servletRequest, res);
}
}
需要注意的是,res.addHeader("Access-Control-Allow-Origin", "*")这行代码必须放在最前面,否则不会生效。
这样,我们可以和普通请求一样,使用get和post。
我在之前的一篇博客中介绍了jsonp的使用 http://xunmengsj.iteye.com/blog/1881008
相关推荐
【标题】:“Tomcat配置解决跨域问题” 在Web开发中,跨域(Cross-Origin)是一种常见的安全限制,它阻止浏览器从一个源加载资源到另一个不同的源。这主要是为了防止恶意脚本通过注入来窃取数据。然而,在进行前后...
在这个“解决跨域问题的jar资源文件.zip”中,包含了两个关键的JAR文件:cors-filter-2.4.jar 和 java-property-utils-1.9.1.jar。这两个库是针对Java Web应用的,用于处理跨域请求。 `cors-filter-2.4.jar` 是一个...
tomcat解决跨域访问问题,具体配置如下: 1、修改tomcat下的Conf/web.xml文件,在该文件内容中新增以下配置,注意,若该web.xml中存在其它filter,则需要将该filter放在所有filter前面; <filter> <filter-name>...
解决arcgis server跨域问题: 1、停掉ArcGIS Server的服务。 2、 打开<ArcGIS Server> \framework\runtime\tomcat\conf\web.xml,注册跨域bean 3、lib下拷贝 cors-filter-2.5.jar java-property-utils-1.9.1.jar包 4...
解决跨域问题的关键配置将在`web.xml`中进行。我们需要添加一个名为`CorsFilter`的过滤器,并设置其初始化参数。以下是一个示例配置: ```xml <filter> <filter-name>CorsFilter</filter-name> <filter-class>org...
本篇文章将详细介绍如何解决Geoserver的跨域问题。 首先,我们需要理解跨域问题的背景。根据同源策略,浏览器只允许与同一源(协议+域名+端口)的请求进行通信。但在实际应用中,比如一个网站前端和Geoserver不在同...
本篇将详细讲解如何利用Spring解决跨域问题,以及如何使用`cors-filter-1.7.jar`和`java-property-utils-1.9.1.jar`这两个库来辅助实现。 一、Spring解决跨域问题的基本原理 1. CORS定义:跨域是指浏览器遵循同源...
由于Geoserver通常在Tomcat上运行,所以解决跨域问题对于确保Geoserver服务能被不同源的客户端访问至关重要。 在描述中提到的文件——"cors-filter-1.7.jar"和"java-property-utils-1.9.jar"是用于实现跨域资源共享...
1. CORS(Cross-Origin Resource Sharing,跨源资源共享):这是解决跨域问题的主要机制。CORS允许服务器明确指定哪些源可以访问其资源。在ASP.NET MVC中,我们可以通过以下方式配置CORS: - 在Global.asax.cs文件...
Tomcat lib目录下添加cors-filter-1.7.jar,java-property-utils-1.9.jar这两个jar包,项目中web.xml 中添加filter,以及出现OPTIONS 类型的请求并返回403的解决方案;压缩文件包含jar文件,以及web.xml配置。
在解决跨域问题时,它提供了一个`CrossOriginFilter`,该过滤器可以配置在Web应用中,允许来自不同源的请求通过设置合适的Access-Control-Allow-*头信息来访问资源。 - `jetty-util` 提供了Jetty服务器的内部工具类...
java-property-utils-1.9.jar是一个用于处理Java属性文件的工具库,虽然在解决跨域问题时不是必需的,但在某些场景下可能有用,例如读取和解析配置文件,以便动态调整CORS Filter的设置。 总的来说,通过引入这两个...
要解决GeoServer的跨域问题,我们需要配置其内置的Jetty服务器来允许跨域请求。提供的两个jar文件,`jetty-servlets-9.4.44.v20210927.jar` 和 `jetty-util-9.4.44.v20210927.jar`,是Jetty服务器的核心组件,它们...
虽然这个jar包本身并不直接用于解决跨域问题,但在配置跨域过滤器时,可能会用到它来读取或操作配置文件中的属性,比如设置允许的源、HTTP方法等。例如,我们可能需要动态地获取或设置允许跨域的域名,这时可以借助...
本篇文章将详细介绍如何解决Cesium在使用Tomcat服务器时的跨域问题。 首先,我们需要理解Cesium的跨域加载机制。Cesium主要通过XMLHttpRequest或Fetch API来请求外部资源,而这些API遵循浏览器的同源策略。为了解决...
geoserver跨域设置: 1、将cors-filter-2.4.jar和java-property-utils-1.9.1.jar,两个jar包文件放入geoserver目录下webapps\geoserver\web-inf\lib中。 2、打开geoserver目录下webapps\geoserver\web-inf中的web....
Java服务器端解决跨域问题是一项常见的任务,尤其是在开发Web应用时。跨域是由于浏览器的安全策略,即同源策略(Same-Origin Policy)所引起的。同源策略限制了来自不同源的HTTP请求,防止恶意网站通过JavaScript...
为了解决Tomcat的跨域问题,我们需要理解CORS的工作原理,并通过配置Tomcat来允许特定的跨域请求。 首先,让我们理解一下CORS的基本概念。CORS是一种W3C标准,它允许浏览器通过在HTTP头中添加`Access-Control-Allow...
解决跨域问题有两种主要途径:一种是从前端角度出发,比如使用JSONP技术;另一种是从后端角度出发,在服务器端添加相应的响应头来控制跨域访问。 本文主要探讨的是服务端解决跨域的方法。特别是针对Java服务器端,...