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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

Java后端带参跨域访问_java后端解决请求跨域

發布時間:2023/12/10 java 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Java后端带参跨域访问_java后端解决请求跨域 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

跨域

跨域:指的是瀏覽器不能執行其他網站的腳本。它是由瀏覽器的同源策略造成的,是瀏覽器對javascript施加的安全限制。

例如:a頁面想獲取b頁面資源,如果a、b頁面的協議、域名、端口、子域名不同,所進行的訪問行動都是跨域的,而瀏覽器為了安全問題一般都限制了跨域訪問,也就是不允許跨域請求資源。注意:跨域限制訪問,其實是瀏覽器的限制。

同源策略:是指協議,域名,端口都要相同,其中有一個不同都會產生跨域

解決方式:

服務端設置Response Header(響應頭部)的Access-Control-Allow-Origin

在需要跨域訪問的類和方法中設置允許跨域訪問(如Spring中使用@CrossOrigin注解);

繼承使用Spring Web的CorsFilter(適用于Spring MVC、Spring Boot)

實現WebMvcConfigurer接口(適用于Spring Boot)

使用Filter方式進行設置

使用Filter過濾器來過濾服務請求,向請求端設置Response Header(響應頭部)的Access-Control-Allow-Origin屬性聲明允許跨域訪問。

@WebFilter

public class CorsFilter implements Filter {

@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", "*");

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

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

response.setHeader("Access-Control-Allow-Credentials", "true");

chain.doFilter(req, res);

}

}

繼承 HandlerInterceptorAdapter

@Component

public class CrossInterceptor extends HandlerInterceptorAdapter {

@Override

public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {

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

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

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

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

response.setHeader("Access-Control-Allow-Credentials", "true");

return true;

}

}

實現 WebMvcConfigurer

@Configuration

@SuppressWarnings("SpringJavaAutowiredFieldsWarningInspection")

public class AppConfig implements WebMvcConfigurer {

@Override

public void addCorsMappings(CorsRegistry registry) {

registry.addMapping("/**") // 攔截所有的請求

.allowedOrigins("http://www.abc.com") // 可跨域的域名,可以為 *

.allowCredentials(true)

.allowedMethods("*") // 允許跨域的方法,可以單獨配置

.allowedHeaders("*"); // 允許跨域的請求頭,可以單獨配置

}

/**

* 頁面跨域訪問Controller過濾

*

* @return

*/

@Override

public void addCorsMappings(CorsRegistry registry) {

WebMvcConfigurer.super.addCorsMappings(registry);

registry.addMapping("/**")

.allowedHeaders("*")

.allowedMethods("Get", "HEAD", "POST", "PUT", "DELECT","OPTIONS")

.allowedOrigins("*");

}

}

使用@CrossOrigin注解

如果只是想部分接口跨域,且不想使用配置來管理的話,可以使用這種方式

在Controller使用

@CrossOrigin

@RestController

@RequestMapping("/user")

public class UserController {

@GetMapping("/{id}")

public User get(@PathVariable Long id) {

}

@DeleteMapping("/{id}")

public void remove(@PathVariable Long id) {

}

}

在具體接口上使用

@RestController

@RequestMapping("/user")

public class UserController {

@CrossOrigin

@GetMapping("/{id}")

public User get(@PathVariable Long id) {

}

@DeleteMapping("/{id}")

public void remove(@PathVariable Long id) {

}

}

總結

以上是生活随笔為你收集整理的Java后端带参跨域访问_java后端解决请求跨域的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。