<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??碼云GVP開源項目 12k star Uniapp+ElementUI 功能強大 支持多語言、二開方便! 廣告
                # Spring 和 CORS > 原文: [https://howtodoinjava.com/spring5/webmvc/spring-mvc-cors-configuration/](https://howtodoinjava.com/spring5/webmvc/spring-mvc-cors-configuration/) **CORS**(跨域資源共享)允許網頁從其他域(例如, CDN 中的字體,CSS 或靜態圖像。 CORS 有助于將來自多個域的 Web 內容提供給通常具有[同源](https://en.wikipedia.org/wiki/Same-origin_policy)安全策略的瀏覽器。 在此示例中,我們將學習在方法級別和全局級別在 [Spring MVC](https://howtodoinjava.com/spring-mvc-tutorial/) 應用程序中啟用**啟用 Spring CORS 支持**。 > 閱讀更多: [Java CORS 過濾器示例](https://howtodoinjava.com/servlets/java-cors-filter-example/) ## 1\. Spring CORS – `@CrossOrigin`的方法級別 Spring MVC 提供[`@CrossOrigin`](https://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/web/bind/annotation/CrossOrigin.html)注解。 該注解將注解的方法或類型標記為允許跨源請求。 #### 1.1. Spring CORS 允許所有 默認情況下,`@CrossOrigin`允許所有來源,所有標頭,在[`@RequestMapping`](https://howtodoinjava.com/spring5/webmvc/controller-getmapping-postmapping/)注解中指定的[ HTTP 方法](https://restfulapi.net/http-methods/)和`maxAge`為 30 分鐘。 您可以通過為注解屬性賦值來覆蓋默認的 CORS 設置: | 屬性 | 描述 | | --- | --- | | `origins` | 允許來源的列表。 它的值位于預先響應和實際響應的`Access-Control-Allow-Origin`標頭中。 | | | `"*"` – 表示允許所有來源。 | | | 如果未定義,則允許??所有來源。 | | `allowedHeaders` | 可以在實際請求中使用的請求標頭列表。 在預先響應標頭`Access-Control-Allow-Headers`中使用值。 | | | `"*"` – 表示允許客戶端請求的所有標頭。 | | | 如果未定義,則允許??所有請求的標頭。 | | `methods` | 支持的 HTTP 請求方法列表。 如果未定義,則使用由`RequestMapping`注解定義的方法。 | | `exposedHeaders` | 瀏覽器將允許客戶端訪問的響應標頭列表。 在實際響應標頭`Access-Control-Expose-Headers`中設置值。 | | | 如果未定義,則使用一個空的公開頭列表。 | | `allowCredentials` | 它確定瀏覽器是否應包括與請求關聯的任何 cookie。 | | | `false` – 不應該包含 cookie。 | | | `" "`(空字符串) – 表示未定義。 | | | `true` – 預先響應將包含標頭`Access-Control-Allow-Credentials`,其值設置為 true。 | | | 如果未定義,則允許??憑據。 | | `maxAge` | 預先響應的緩存持續時間的最長期限(以秒為單位)。 在標頭`Access-Control-Max-Age`中設置值。 | | | 如果未定義,則將最大年齡設置為 1800 秒(30 分鐘)。 | #### 1.2. 類/控制器級別的`@CrossOrigin` `HomeController.java` ```java @CrossOrigin(origins = "*", allowedHeaders = "*") @Controller public class HomeController { @GetMapping(path="/") public String homeInit(Model model) { return "home"; } } ``` > 閱讀更多 – [Spring 5 MVC 示例](https://howtodoinjava.com/spring5/webmvc/spring5-mvc-hibernate5-example/) #### 1.3. 方法級別的`@CrossOrigin` `HomeController.java` ```java @Controller public class HomeController { @CrossOrigin(origins = "*", allowedHeaders = "*") @GetMapping(path="/") public String homeInit(Model model) { return "home"; } } ``` #### 1.4. `@CrossOrigin`的方法級別覆蓋 `homeInit()`方法只能從`http://example.com`域訪問。 `HomeController`中的其他方法可以從所有域訪問。 `HomeController.java` ```java @Controller @CrossOrigin(origins = "*", allowedHeaders = "*") public class HomeController { @CrossOrigin(origins = "http://example.com") @GetMapping(path="/") public String homeInit(Model model) { return "home"; } } ``` ## 2\. Spring CORS – 全局 CORS 配置 #### 2.1. 實現`WebMvcConfigurer` 要為整個應用程序啟用 CORS,請使用`WebMvcConfigurer`添加`CorsRegistry`。 `CorsConfiguration.java` ```java import org.springframework.context.annotation.Configuration; import org.springframework.web.servlet.config.annotation.CorsRegistry; import org.springframework.web.servlet.config.annotation.EnableWebMvc; import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; @Configuration @EnableWebMvc public class CorsConfiguration implements WebMvcConfigurer { @Override public void addCorsMappings(CorsRegistry registry) { registry.addMapping("/**") .allowedMethods("GET", "POST"); } } ``` #### 2.2. `WebMvcConfigurer` Bean 在 Spring Boot 應用程序中,建議僅聲明一個`WebMvcConfigurer` bean。 `CorsConfiguration.java` ```java @Configuration public class CorsConfiguration { @Bean public WebMvcConfigurer corsConfigurer() { return new WebMvcConfigurer() { @Override public void addCorsMappings(CorsRegistry registry) { registry.addMapping("/**").allowedOrigins("http://localhost:8080"); } }; } } ``` #### 2.3. Spring Security 的 CORS 要通過 [Spring Security](https://howtodoinjava.com/spring-security-tutorial/)啟用 CORS 支持,請配置[`CorsConfigurationSource`](https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/web/cors/CorsConfigurationSource.html) bean 并使用`HttpSecurity.cors()`配置。 `WebSecurityConfig.java` ```java @EnableWebSecurity public class WebSecurityConfig extends WebSecurityConfigurerAdapter { @Override protected void configure(HttpSecurity http) throws Exception { http.cors().and() //other config } @Bean CorsConfigurationSource corsConfigurationSource() { CorsConfiguration configuration = new CorsConfiguration(); configuration.setAllowedOrigins(Arrays.asList("https://example.com")); configuration.setAllowedMethods(Arrays.asList("GET","POST")); UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource(); source.registerCorsConfiguration("/**", configuration); return source; } } ``` 將我的問題放在評論部分。 學習愉快! [下載源碼](https://github.com/lokeshgupta1981/spring-webmvc)
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看