日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

java解决跨域问题

發(fā)布時間:2024/10/5 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java解决跨域问题 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

1.編寫Filter類

package com.skynet.oilmap.system;

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;

public class SimpleCORSFilter implements Filter{
? ??
? ? public final static Logger LOGGER = LoggerFactory.getLogger(SimpleCORSFilter.class);
? ??
? ? private boolean isCross = false;

? ? @Override
? ? public void destroy() {
? ? ? ? isCross = false;
? ? }

? ? @Override
? ? public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) {
? ? ? ? try {
? ? ? ? ? ? if (isCross) {
? ? ? ? ? ? ? ? HttpServletRequest httpServletRequest = (HttpServletRequest) request;
? ? ? ? ? ? ? ? HttpServletResponse httpServletResponse = (HttpServletResponse) response;
? ? ? ? ? ? ? ? LOGGER.debug("跨域攔截請求: " + httpServletRequest.getServletPath());
? ? ? ? ? ? ? ? httpServletResponse.setHeader("Access-Control-Allow-Origin", "*");
? ? ? ? ? ? ? ? httpServletResponse.setHeader("Access-Control-Allow-Methods", "POST, GET, OPTIONS, DELETE");
? ? ? ? ? ? ? ? httpServletResponse.setHeader("Access-Control-Max-Age", "0");
? ? ? ? ? ? ? ? httpServletResponse.setHeader("Access-Control-Allow-Headers", "Origin, No-Cache, X-Requested-With, If-Modified-Since, Pragma, Last-Modified, Cache-Control, Expires, Content-Type, X-E4M-With,userId,token");
? ? ? ? ? ? ? ? httpServletResponse.setHeader("Access-Control-Allow-Credentials", "true");
? ? ? ? ? ? ? ? httpServletResponse.setHeader("XDomainRequestAllowed", "1");
? ? ? ? ? ? }
? ? ? ? ? ? chain.doFilter(request, response);
? ? ? ? }catch (Exception e) {
? ? ? ? ? ? LOGGER.debug("攔截請求,判斷是否跨域異常", e);
? ? ? ? }
? ? ? ??
? ? }

? ? @Override
? ? public void init(FilterConfig filterConfig) throws ServletException {
? ? ? ? String isCrossStr = filterConfig.getInitParameter("IsCross");
? ? ? ? isCross = isCrossStr.equals("true") ? true : false;
? ? }

}
?

2.在web.xml中配置該Filter

?? ?<!-- 跨域請求 -->
?? ?<filter>
?? ??? ?<filter-name>SimpleCORSFilter</filter-name>
?? ??? ?<filter-class>com.skynet.oilmap.system.SimpleCORSFilter</filter-class>
?? ??? ?<init-param>
?? ??? ??? ?<param-name>IsCross</param-name>
?? ??? ??? ?<param-value>true</param-value>
?? ??? ?</init-param>
?? ?</filter>
?? ?<filter-mapping>
?? ??? ?<filter-name>SimpleCORSFilter</filter-name>
?? ??? ?<url-pattern>/*</url-pattern>
?? ?</filter-mapping>

?

配置結(jié)束即可解決跨域問題。

總結(jié)

以上是生活随笔為你收集整理的java解决跨域问题的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。