springMvc跨域

来源:互联网 发布:呼死你淘宝怎么找 编辑:程序博客网 时间:2024/06/06 12:32

代码:

package com.***.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.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import org.slf4j.Logger;import org.slf4j.LoggerFactory;import org.springframework.stereotype.Component;@Componentpublic class SimpleCORSFilter implements Filter {private static Logger log = LoggerFactory.getLogger(SimpleCORSFilter.class);private static final String ORIGIN = "Origin";private static final String OPTIONS = "OPTIONS";private static final String OK = "OK";public void destroy() {}public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain)throws IOException, ServletException {HttpServletRequest httpServletRequest = (HttpServletRequest) servletRequest;HttpServletResponse httpServletResponse = (HttpServletResponse) servletResponse;if (httpServletRequest.getHeader(ORIGIN) != null) {String origin = httpServletRequest.getHeader(ORIGIN);httpServletResponse.setHeader("Access-Control-Allow-Origin", origin);httpServletResponse.setHeader("Access-Control-Allow-Methods", "POST, PUT, GET, OPTIONS, DELETE");httpServletResponse.setHeader("Access-Control-Max-Age", "3600");httpServletResponse.setHeader("Access-Control-Allow-Headers","Accept-Language,Content-Type,X-Requested-With,accept,Origin,Access-Control-Request-Method,Access-Control-Request-Headers,Authorization,X-Filename,Content-Disposition,Content-Length");// Allow more than the 6 default headers to be returned, as the// content length is required for a download file request to get the// file sizehttpServletResponse.setHeader("Access-Control-Expose-Headers","Accept-Language,Content-Type,X-Requested-With,accept,Origin,Access-Control-Request-Method,Access-Control-Request-Headers,Authorization,X-Filename,Content-Disposition,Content-Length");}if (httpServletRequest.getMethod().equals(OPTIONS)) {try {httpServletResponse.getWriter().print(OK);httpServletResponse.getWriter().flush();} catch (IOException e) {log.error("doFilter错误",e);}} else {filterChain.doFilter(servletRequest, servletResponse);}}public void init(FilterConfig filterConfig) {}}


然后是配置文件:

<filter><filter-name>SimpleCORSFilter</filter-name><filter-class>com.leju001.filter.SimpleCORSFilter</filter-class><async-supported>true</async-supported> </filter><filter-mapping><filter-name>SimpleCORSFilter</filter-name><url-pattern>/*</url-pattern></filter-mapping>


然后就可以ajax跨域请求了。

ajax请求:

$.ajax({            type: "POST",            url: baseUrlconmon + "/service/list",            data: JSON.stringify(parameter),            dataType: "json",            contentType: "application/json;charset=UTF-8",            success: function(result) {                if (result.status == 2000) {                    var data = result.data;                    console.log(data);                } else {                    alert(result.data.errorDes);                }            }        });


0 0
原创粉丝点击