java解決請求跨域的兩種方法
java解決請求跨域問題,有以下兩種寫法
1.使用攔截器,實現javax.servlet.Filter介面
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.annotation.WebFilter;
import javax.servlet.http.HttpServletResponse;
@WebFilter(filterName="CorsFilter" , urlPatterns="*.do")
public class CorsFilter implements Filter{
@Override
public void destroy() {
}
@Override
public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain)
throws IOException, ServletException {
HttpServletResponse response = (HttpServletResponse) resp;
response.setHeader("Access-Control-Allow-Origin", "*"); //解決跨域訪問報錯
response.setHeader("Access-Control-Allow-Methods", "POST, PUT, GET, OPTIONS, DELETE");
response.setHeader("Access-Control-Max-Age", "3600"); //設定過期時間
response.setHeader("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept, client_id, uuid, Authorization");
response.setHeader("Cache-Control", "no-cache, no-store, must-revalidate"); // 支援HTTP 1.1.
response.setHeader("Pragma", "no-cache"); // 支援HTTP 1.0. response.setHeader("Expires", "0");
chain.doFilter(req, resp);
}
@Override
public void init(FilterConfig arg0) throws ServletException {
}
}
如果想用xml的形式配置攔截器,可以刪除@WebFilter(filterName="CorsFilter" , urlPatterns="*.do"),然後在web.xml中新增下面的配置
CorsFilter
com.huaming.filter.CorsFilter
CorsFilter
*.do
2.使用註解的形式,配置org.springframework.web.filter.CorsFilter,通常springboot專案多數使用這種方式
import org.springframework.web.filter.CorsFilter;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.cors.CorsConfiguration;
import org.springframework.web.cors.UrlBasedCorsConfigurationSource;
/** 無錫婦科醫院
* 解決跨域問題springboot所需配置
*/
@Configuration
public class CORSConfiguration {
@Bean
public CorsFilter corsFilter() {
//1.新增CORS配置資訊
CorsConfiguration config = new CorsConfiguration();
//1) 允許的域,不要寫*,否則cookie就無法使用了
config.addAllowedOrigin("*");
config.addAllowedHeader("*"); // 允許任何頭
config.addAllowedMethod("*"); // 允許任何方法(post、get等)
//2) 是否傳送Cookie資訊
config.setAllowCredentials(true);
//3) 允許的請求方式
config.addAllowedMethod("OPTIONS");
config.addAllowedMethod("HEAD");
config.addAllowedMethod("GET");
config.addAllowedMethod("PUT");
config.addAllowedMethod("POST");
config.addAllowedMethod("DELETE");
config.addAllowedMethod("PATCH");
// 4)允許的頭資訊
config.addAllowedHeader("*");
// 5)配置有效時長
config.setMaxAge(3600*24L);
//2.新增對映路徑,我們攔截一切請求
UrlBasedCorsConfigurationSource configSource = new UrlBasedCorsConfigurationSource();
configSource.registerCorsConfiguration("/**", config);
//3.返回新的CorsFilter.
return new CorsFilter(configSource);
}
}
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69945560/viewspace-2654704/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 跨域請求?兩種解決方案CORS與JSONP跨域CORSJSON
- 盤點 Spring Boot 解決跨域請求的幾種方法Spring Boot跨域
- 跨域的九種解決方法跨域
- JS傳送跨域Post請求出現兩次請求的解決辦法JS跨域
- springboot設定cors跨域請求的兩種方式Spring BootCORS跨域
- Ajax 跨域請求 Access to XMLHttpRequest 解決方案跨域XMLHTTP
- 前端http請求跨域問題解決前端HTTP跨域
- JSONP解決跨域請求問題JSON跨域
- 跨域請求跨域
- SpringBoot解決跨域請求攔截Spring Boot跨域
- Springboot處理CORS跨域請求的三種方法Spring BootCORS跨域
- js ajax請求封裝及解決node請求跨域問題JS封裝跨域
- 【SpringMVC】解決跨域問題的兩種方式SpringMVC跨域
- 解決跨域的兩種方案JSONP和CORS跨域JSONCORS
- javascript中跨域請求詳解JavaScript跨域
- AJAX(XMLHttpRequest)進行跨域請求方法詳解(一)XMLHTTP跨域
- AJAX(XMLHttpRequest)進行跨域請求方法詳解(二)XMLHTTP跨域
- AJAX(XMLHttpRequest)進行跨域請求方法詳解(三)XMLHTTP跨域
- AJAX(XMLHttpRequest)進行跨域請求方法詳解(四)XMLHTTP跨域
- React 解決fetch跨域請求時session失效React跨域Session
- CORS跨域請求CORS跨域
- vue跨域請求Vue跨域
- 解決ajax跨域問題的多種方法跨域
- 跨域是什麼?跨域請求資源有哪些方法?跨域
- jquery ajax 跨域請求jQuery跨域
- 允許跨域請求跨域
- 跨域的幾種解決方案跨域
- ArkWeb網路安全基礎 - 跨域請求與解決方案Web跨域
- 跨域請求cookie資源共享詳解跨域Cookie
- 記錄一次解決服務請求的跨域問題跨域
- 解決 jquery使用ajax請求發生跨域問題的辦法jQuery跨域
- CORS跨域時,為何會傳送兩次請求?CORS跨域
- 解決Ajax不能跨域的方法跨域
- 同源政策與跨域請求跨域
- 跨域請求後端配置跨域後端
- Vue——介面請求支援跨域Vue跨域
- vue axios 請求跨域VueiOS跨域
- NGINX如何配置跨域請求Nginx跨域