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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 盤點 Spring Boot 解決跨域請求的幾種方法Spring Boot跨域
- SpringBoot解決跨域請求攔截Spring Boot跨域
- Springboot處理CORS跨域請求的三種方法Spring BootCORS跨域
- 跨域的九種解決方法跨域
- Ajax 跨域請求 Access to XMLHttpRequest 解決方案跨域XMLHTTP
- 前端http請求跨域問題解決前端HTTP跨域
- 【SpringMVC】解決跨域問題的兩種方式SpringMVC跨域
- React 解決fetch跨域請求時session失效React跨域Session
- 跨域請求跨域
- js ajax請求封裝及解決node請求跨域問題JS封裝跨域
- 解決ajax跨域問題的多種方法跨域
- 跨域是什麼?跨域請求資源有哪些方法?跨域
- CORS跨域請求CORS跨域
- vue跨域請求Vue跨域
- 允許跨域請求跨域
- vue axios 請求跨域VueiOS跨域
- ArkWeb網路安全基礎 - 跨域請求與解決方案Web跨域
- 跨域請求cookie資源共享詳解跨域Cookie
- 記錄一次解決服務請求的跨域問題跨域
- 解決 jquery使用ajax請求發生跨域問題的辦法jQuery跨域
- axios傳送兩次請求原因及解決方法iOS
- CORS跨域時,為何會傳送兩次請求?CORS跨域
- 基於 HTTP 請求攔截,快速解決跨域和代理 MockHTTP跨域Mock
- Cross-origin 跨域請求ROS跨域
- 同源政策與跨域請求跨域
- php 支援jsonp跨域請求PHPJSON跨域
- 跨域請求後端配置跨域後端
- NGINX如何配置跨域請求Nginx跨域
- Vue——介面請求支援跨域Vue跨域
- JAVA | Java 解決跨域問題Java跨域
- ajax跨域請求之CORS的使用跨域CORS
- Java解決跨域問題Java跨域
- GET和POST兩種基本請求方法的區別
- 跨域之OPTION請求【轉載】跨域
- web 跨域請求安全問題Web跨域
- IE9 跨域請求相容IE9跨域
- csrf解決Ajax請求跨站問題
- Java中實現並行請求兩種方式Java並行