关于springmvc的跨域问题

来源:互联网 发布:淘宝上可信的澳洲代购 编辑:程序博客网 时间:2024/06/05 19:57

废话不多说直接上代码


1.首先是一个过滤器:



import java.net.URL;
import java.util.List;


import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;


import org.springframework.web.servlet.handler.HandlerInterceptorAdapter;


public class AccessKeyInterceptor extends HandlerInterceptorAdapter {  
   @Override  
   public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {  


    String referer = request.getHeader("Referer");  
       URL u = new URL(referer);  
       String host = u.getHost().toLowerCase();    
       response.setHeader("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept");
       response.setHeader("Access-Control-Allow-Origin", "*");
       return true;  
   }  
        
}

2.配置过滤器,拦截的接口

<mvc:interceptor>
            <mvc:mapping path="/user/getUserCount"/>
            <bean  class="com.hiifire.filter.AccessKeyInterceptor"></bean>
        </mvc:interceptor>

3.由于Spring默认Controller是不处理OPTIONS的请求的,所以必须在web.xml中打开,如下:

<servlet>
        <servlet-name>mvc</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> 
        <init-param>  
       <param-name>dispatchOptionsRequest</param-name>  
       <param-value>true</param-value>  
  </init-param> 

        <load-on-startup>1</load-on-startup> 
    </servlet>
 
    <servlet-mapping>
        <servlet-name>mvc</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>

4.js进行访问

$(function(){
$.post("http://192.168.6.84/user/getUserCount",function(data,status){
alert(JSON.stringify(data));
},'json');
})

搞定

0 0
原创粉丝点击