天天看點

java 前後端分離,跨域問題及擷取響應頭資訊

java 前後端分離,跨域問題及擷取響應頭資訊

跨域問題解決方案 :

基礎filter 實作doFilter方法

public class CORSFilter  implements Filter {

    @Override

    public void init(FilterConfig filterConfig) throws ServletException {

    }

    @Override

    public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException {

        HttpServletResponse response = (HttpServletResponse) res;

       response.setHeader("Access-Control-Allow-Origin", "*");

response.setHeader("Access-Control-Allow-Methods", "POST, GET, OPTIONS, DELETE");

response.setHeader("Access-Control-Max-Age", "3600");

response.addHeader("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept");//Access-Control-Allow-Headers配置允許前端送出的請求頭資訊

response.addHeader("Access-Control-Expose-Headers", "GID,SID");//Access-Control-Expose-Headers配置允許前端擷取到的請求頭資訊

        chain.doFilter(req, res);

    }

    @Override

    public void destroy() {

    }

}

web.xml:

<!-- cors跨域 -->

<filter>  

        <filter-name>CORS</filter-name>  

        <filter-class>com.wld.common.CORSFilter</filter-class>  

    </filter>  

    <filter-mapping>  

        <filter-name>CORS</filter-name>  

        <url-pattern>/*</url-pattern>  

    </filter-mapping>

或者:

pom.xml:

<dependency>

<groupId>com.thetransactioncompany</groupId>

<artifactId>cors-filter</artifactId>

<version>2.6</version>

</dependency>

web.xml:

<!-- cors跨域 -->

<filter>  

        <filter-name>CORS</filter-name>  

        <filter-class>com.thetransactioncompany.cors.CORSFilter</filter-class>  

        <init-param>  

            <param-name>cors.allowOrigin</param-name> 

            <param-value>*</param-value> 

        </init-param>  

        <init-param>  

            <param-name>cors.supportedMethods</param-name> 

            <!-- GET, POST, HEAD, PUT, DELETE -->

            <param-value>POST</param-value> 

        </init-param>  

        <init-param>  

            <param-name>cors.supportedHeaders</param-name> 

            <param-value>Accept, Origin, X-Requested-With, Content-Type, Last-Modified,SID,GID</param-value>

        </init-param>  

        <init-param>  

            <param-name>cors.exposedHeaders</param-name> 

            <param-value>Set-Cookie,SID,GID</param-value>

        </init-param>  

        <init-param>  

            <param-name>cors.supportsCredentials</param-name> 

            <param-value>true</param-value> 

        </init-param>  

    </filter>  

    <filter-mapping>  

        <filter-name>CORS</filter-name>  

        <url-pattern>/*</url-pattern>  

    </filter-mapping>

參考資料:https://developer.mozilla.org/z-US/docs/Web/HTTP/CORS

繼續閱讀