java接口跨域问题

java项目调用接口报跨域错误。解决问题方法如下:

写一个拦截器类

	package org.jeecgframework.core.util;
	
	import java.io.IOException;
	
	import javax.servlet.Filter;
	
	import javax.servlet.FilterChain;
	
	import javax.servlet.FilterConfig;
	
	import javax.servlet.ServletException;
	
	import javax.servlet.ServletRequest;
	
	import javax.servlet.ServletResponse;
	
	import javax.servlet.http.HttpServletRequest;
	
	import javax.servlet.http.HttpServletResponse;
	
	import org.apache.commons.httpclient.HttpStatus;
	
	/**
	
	* Created by WangShuai on 2016/7/30.
	* 解决跨域拦截器
	
	*/
	
	public class CorsFilter implements Filter {
	
		 @Override  
	        public void destroy() {  
	              
	        }  
	      
	        @Override  
	        public void doFilter(ServletRequest req, ServletResponse res,  
	                FilterChain chain) throws IOException, ServletException {  
	                HttpServletResponse response = (HttpServletResponse) res;  
	                response.setHeader("Access-Control-Allow-Origin", "*");  
	                response.setHeader("Access-Control-Allow-Methods", "POST, GET, OPTIONS, DELETE");  
	                response.setHeader("Access-Control-Max-Age", "3600");  
	                response.setHeader("Access-Control-Allow-Headers", "x-requested-with");  
	                chain.doFilter(req, res);  
	              
	        }  
	      
	        @Override  
	        public void init(FilterConfig arg0) throws ServletException {  
	              
	        }  

	
	}

2.修改web.xml文件。在里面添加如下代码

 

 <!-- 解决跨域问题 -->
  <filter>
		  <filter-name>cors</filter-name>
		  <filter-class>org.jeecgframework.core.util.CorsFilter</filter-class>
 </filter>     
 
	<filter-mapping>  
     <filter-name>cors</filter-name>  
     <url-pattern>/*</url-pattern>  
   </filter-mapping>
        

里面的org.jeecgframework.core.util.CorsFilter部分写你自己的路径,其他不用变。

跨域问题指的是浏览器出于安全性考虑,限制了客户端JavaScript脚本发起跨域请求的能力。在Java Web开发中,如果前端页面和后台接口不在同一个域名下,就会遇到跨域问题。要解决这个问题,可以采用以下两种方式: 1. 服务器端设置响应头 通过在服务器端设置响应头,让浏览器认为当前请求是合法的跨域请求,从而绕过跨域限制。在Java中,可以通过设置HttpServletResponse对象的响应头来实现。常用的设置如下: ``` response.setHeader("Access-Control-Allow-Origin", "*"); response.setHeader("Access-Control-Allow-Methods", "POST, GET, OPTIONS, DELETE"); response.setHeader("Access-Control-Max-Age", "3600"); response.setHeader("Access-Control-Allow-Headers", "x-requested-with"); ``` 其中,Access-Control-Allow-Origin表示允许跨域请求的来源地址,*表示允许所有来源。Access-Control-Allow-Methods表示允许跨域请求的HTTP方法,Access-Control-Max-Age表示预检请求的有效期,Access-Control-Allow-Headers表示允许跨域请求的自定义头信息。 2. 使用JSONP JSONP是一种前端跨域请求的解决方案,它通过在页面中动态添加一个<script>标签来实现。在Java中,可以通过编写返回JSONP格式数据的接口来实现。JSONP的原理是利用<script>标签不受同源策略限制的特性,将需要获取的数据包装成一个回调函数的参数,然后通过动态创建<script>标签,以回调函数名作为参数发送到服务器端获取数据。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

易菲

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值