国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

香港云服务器
服務器之家 - 編程語言 - Java教程 - SpringBoot解決跨域請求攔截問題代碼實例

SpringBoot解決跨域請求攔截問題代碼實例

2019-06-25 19:44冬眠的山谷 Java教程

這篇文章主要介紹了SpringBoot解決跨域請求攔截代碼實例,在微服務開發中,一個系統包含多個微服務,會存在跨域請求的場景。 本文講解SpringBoot解決跨域請求攔截的問題。,需要的朋友可以參考下

前言

同源策略:判斷是否是同源的,主要看這三點,協議,ip,端口。

同源策略就是瀏覽器出于網站安全性的考慮,限制不同源之間的資源相互訪問的一種政策。

比如在域名https://www.baidu.com下,腳本不能夠訪問https://www.sina.com源下的資源,否則將會被瀏覽器攔截。

注意兩點:

1.必須是腳本請求,比如AJAX請求。

但是如下情況不會產生跨域攔截

1<img src="xxx"/>
2<a href='xxx"> </a>

2.跨域攔截是前端請求已經發出,并且在后端返回響應時檢查相關參數,是否允許接收后端請求。

在微服務開發中,一個系統包含多個微服務,會存在跨域請求的場景。

本文主要講解SpringBoot解決跨域請求攔截的問題。

搭建項目

這里創建兩個web項目,web1 和 web2.

web2項目請求web1項目的資源。

這里只貼關鍵代碼,完整代碼參考GitHub

WEB2

創建一個Controller返回html頁面

1@Slf4j
2@Controller
3public class HomeController {
4@RequestMapping("/index")
5public String home(){
6log.info("/index");
7return "/home";
8}
9}

html頁面 home.html

這里創建了一個按鈕,按鈕按下則請求資源:http://localhost:8301/hello

01<!DOCTYPE html>
02<html lang="en">
03<head>
04<meta charset="UTF-8">
05<title>web2</title>
07</script>
08<script>
09$(function () {
10$("#testBtn").click(function () {
11console.log("testbtn ...");
12$.get("http://localhost:8301/hello",function(data,status){
13alert("數據: " + data + "\n狀態: " + status);
14});
15})
16})
17</script>
18</head>
19<body>
20web2
21<button id="testBtn">測試</button>
22</body>
23</html>

WEB1

1@Slf4j
2@RestController
3public class Web1Controller {
4@RequestMapping("/hello")
5public String hello(){
6log.info("hello ");
7return "hello," + new Date().toString();
8}
9}

這里配置兩個項目為不同的端口。

WEB1為8301

WEB2為8302

因此是不同源的。

測試

在web1還沒有配置允許跨域訪問的情況下

按下按鈕,將會出現錯誤。顯示Header中沒有Access-Control-Allow-Origin

1Access to XMLHttpRequest at 'http://localhost:8301/hello' from origin 'http://localhost:8300' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.

WEB1添加允許跨域請求,通過實現WebMvcConfigurer

1@Configuration
2public class WebMvcConfig implements WebMvcConfigurer {
3@Override
4public void addCorsMappings(CorsRegistry registry) {
5registry.addMapping("/hello");
6}
7}

再次訪問將會返回正常數據。

SpringBoot解決跨域請求攔截問題代碼實例

除了以上的配置外,還可以做更細致的限制

比如對請求的headers,請求的方法POST/GET...。請求的源進行限制。

SpringBoot解決跨域請求攔截問題代碼實例

同時還可以使用注解 @CrossOrigin來替換上面的配置。

01@Slf4j
02@RestController
03public class Web1Controller {
04@CrossOrigin
05@RequestMapping("/hello")
06public String hello(){
07log.info("hello ");
08return "hello," + new Date().toString();
09}
10}

注解可以用在類上,也可以用在方法上,但必須是控制器類

配置和上面一樣,也是可以對方法,header,源進行個性化限制。

01@Target({ElementType.METHOD, ElementType.TYPE})
02@Retention(RetentionPolicy.RUNTIME)
03@Documented
04public @interface CrossOrigin {
05/** @deprecated */
06@Deprecated
07String[] DEFAULT_ORIGINS = new String[]{"*"};
08/** @deprecated */
09@Deprecated
10String[] DEFAULT_ALLOWED_HEADERS = new String[]{"*"};
11/** @deprecated */
12@Deprecated
13boolean DEFAULT_ALLOW_CREDENTIALS = false;
14/** @deprecated */
15@Deprecated
16long DEFAULT_MAX_AGE = 1800L;
17@AliasFor("origins")
18String[] value() default {};
19@AliasFor("value")
20String[] origins() default {};
21String[] allowedHeaders() default {};
22String[] exposedHeaders() default {};
23RequestMethod[] methods() default {};
24String allowCredentials() default "";
25long maxAge() default -1L;
26}

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持服務器之家。

延伸 · 閱讀

精彩推薦
564
主站蜘蛛池模板: 色婷婷一区二区三区 | 精品国产乱码久久久久夜 | 国产片在线看 | 亚洲国产成人av好男人在线观看 | 久久伊人国产 | 欧美精品乱码久久久久久按摩 | 亚洲综合视频 | 日韩影片在线观看 | 国产一区二区三区四 | 欧美亚洲天堂 | 中文字幕成人 | 中文字幕在线精品 | 久久女人网| 亚洲网站在线观看 | 女人高潮视频网站 | 久草网址| 夜夜操av| av网址在线播放 | 国产片在线观看 | 欧美午夜一区二区三区免费大片 | 久久国际影院 | 免费看的av | 成人va在线观看 | 午夜播放器在线观看 | 欧美国产精品一区二区三区 | 精品久久久久久亚洲综合网 | 激情婷婷丁香 | 人人天天操 | 精品国产色| 久久99操 | 精品视频在线免费观看 | 久久久久久久av | 久久久亚洲精品视频 | 中文字幕亚洲一区二区三区 | 精品亚洲一区二区 | 精品国产黄a∨片高清在线 天天色天天色 | 亚洲福利在线观看 | 日韩激情一区二区 | 久久精品91久久久久久再现 | 中文字幕av一区二区三区 | 亚洲一区二区三 |