后台解决跨域问题的几种方式

一、Spring跨域拦截注解方式配置

1、spring版本至少在4.2以上,本人使用的是4.3

2、跨区没配置之前请求访问会报错
请求方式:

当前域地址:http://192.168.1.78:9080/testGit/

(index):1 Failed toload http://192.168.1.78:8800/bronzecoll/share/shareNews?id=1: No'Access-Control-Allow-Origin' header is present on the requested resource.Origin 'http://192.168.1.78:9080' is therefore not allowed access.

请求服务端地址:http://192.168.1.78:8800/bronzecoll/share/shareNews?id=1

服务端配置:

Controller头部配置注解:@CrossOrigin(origins = "*", maxAge = 3600)//跨越请求配置


3、配置后请求访问


数据获取就正常了

二 、使用过滤器拦截请求,增加请求头

1、新建一个Filter类: Filter是一个过滤器。对你设定的请求地址进行拦截,然后设置。

package com.jgonet.filter;
 
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.HttpServletResponse;  
  
  
public class HeaderFilter implements Filter   
{   
    public void doFilter(ServletRequest request, ServletResponse resp, FilterChain chain) throws IOException, ServletException  
    {  
    HttpServletResponse response = (HttpServletResponse) resp; response.setHeader("Access-Control-Allow-Origin", "*"); //解决跨域访问报错   
    response.setHeader("Access-Control-Allow-Methods", "POST, PUT, GET, OPTIONS, DELETE");   
    response.setHeader("Access-Control-Max-Age", "3600"); //设置过期时间   
    response.setHeader("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept, client_id, uuid, Authorization");   
    response.setHeader("Cache-Control", "no-cache, no-store, must-revalidate"); // 支持HTTP 1.1.   
    response.setHeader("Pragma", "no-cache"); // 支持HTTP 1.0. response.setHeader("Expires", "0");   
    chain.doFilter(request, resp);   
    }   
    public void init(FilterConfig filterConfig) {}   
    public void destroy() {}  
} 

2、在web.xml中配置:加入下面的代码。com.jgonet.filter.HeaderFilter是我类HeaderFilter的路径,你自己记得改下,放在哪个路径下就该成哪个。

   <filter>  
     <filter-name>HeaderFilter</filter-name>  
     <filter-class>com.jgonet.filter.HeaderFilter</filter-class><!--你过滤器的包 -->  
   </filter>  
   <filter-mapping>  
     <filter-name>HeaderFilter</filter-name>  
     <url-pattern>/*</url-pattern><!-- 你开放的接口前缀  -->  
   </filter-mapping>

3、 ajax调用 :这里url中192.169.2.80是我电脑的ip地址,8080是我电脑的tomcat的端口号,procePlatform项目名,employee/login.do接口路径。

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <meta http-equiv="Access-Control-Allow-Origin" content="*" />
    <title>消息框</title>
    <meta charset="utf-8">
<script type="text/javascript" src="jquery-1.11.0.min.js"></script>
</head>
<body>
<div>
<button onclick="test();">SEND</button>
</div>
<script>
function test() {
    //var reqData = "{ 'name': '1001', 'password': '123456'}";
	$.ajax({  
    url:'http://192.169.2.80:8080/procePlatform/employee/login.do',  
    method:'GET',  
    dataType:'json',  
    success:function(data){  
        alert("okok");  
    },  
  }); 
}
</script>
</body>
</html>

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值