Java跨域設置


Access-Control-Allow-Origin 為允許哪些Origin發起跨域請求. 這里設置為”*”表示允許所有,通常設置為所有並不安全,最好指定一下。 
Access-Control-Allow-Methods 為允許請求的方法. 
Access-Control-Max-Age 表明在多少秒內,不需要再發送預檢驗請求,可以緩存該結果 
Access-Control-Allow-Headers 表明它允許跨域請求包含content-type頭,這里設置的x-requested-with ,表示ajax請求

<filter>
        <filter-name>CrossOrigin</filter-name>
        <filter-class>org.digdata.swustoj.filter.CrossOriginFilter</filter-class>
         <init-param>
            <param-name>AccessControlAllowOrigin</param-name>
            <param-value>*</param-value>
        </init-param>
        <init-param>
            <param-name>AccessControlAllowMethods</param-name>
            <param-value>POST, GET, DELETE, PUT</param-value>
        </init-param>
        <init-param>
            <param-name>AccessControlMaxAge</param-name>
            <param-value>3628800</param-value>
        </init-param>
        <init-param>
            <param-name>AccessControlAllowHeaders</param-name>
            <param-value>x-requested-with</param-value>
        </init-param>
    </filter>
    <filter-mapping>
        <filter-name>CrossOrigin</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>
package org.digdata.swustoj.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;

/**
 * 
 * @author wwhhf
 * @since 2016年5月30日
 * @comment 跨域過濾器
 */
public class CrossOriginFilter implements Filter {

    private FilterConfig config = null;

    @Override
    public void init(FilterConfig config) throws ServletException {
        this.config = config;
    }

    @Override
    public void destroy() {
        this.config = null;
    }

    /**
     * 
     * @author wwhhf
     * @since 2016/5/30
     * @comment 跨域的設置
     */
    @Override
    public void doFilter(ServletRequest request, ServletResponse response,
            FilterChain chain) throws IOException, ServletException {
        HttpServletResponse httpResponse = (HttpServletResponse) response;
        // 表明它允許"http://xxx"發起跨域請求
        httpResponse.setHeader("Access-Control-Allow-Origin",
                config.getInitParameter("AccessControlAllowOrigin"));
        // 表明在xxx秒內,不需要再發送預檢驗請求,可以緩存該結果
        httpResponse.setHeader("Access-Control-Allow-Methods",
                config.getInitParameter("AccessControlAllowMethods"));
        // 表明它允許xxx的外域請求
        httpResponse.setHeader("Access-Control-Max-Age",
                config.getInitParameter("AccessControlMaxAge"));
        // 表明它允許跨域請求包含xxx頭
        httpResponse.setHeader("Access-Control-Allow-Headers",
                config.getInitParameter("AccessControlAllowHeaders"));
        chain.doFilter(request, response);
    }

}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM