springMvc跨域

代码:

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;

@Component
public 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 size
			httpServletResponse.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);
                }
            }
        });


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值