欧美亚洲中文,在线国自产视频,欧洲一区在线观看视频,亚洲综合中文字幕在线观看

      1. <dfn id="rfwes"></dfn>
          <object id="rfwes"></object>
        1. 站長資訊網(wǎng)
          最全最豐富的資訊網(wǎng)站

          SpringBoot 與 Nginx跨域配置

          SpringBoot跨域配置

          我們的后端使用Spring Boot。Spring Boot跨域非常簡單,只需書寫以下代碼即可。
          @Configuration
          public class CustomCORSConfiguration {
            private CorsConfiguration buildConfig() {
              CorsConfiguration corsConfiguration = new CorsConfiguration();
              corsConfiguration.addAllowedOrigin(“*”);
              corsConfiguration.addAllowedHeader(“*”);
              corsConfiguration.addAllowedMethod(“*”);
              return corsConfiguration;
            }
            @Bean
            public CorsFilter corsFilter() {
              UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
              source.registerCorsConfiguration(“/**”, buildConfig());
              return new CorsFilter(source);
            }
          }

          Nginx跨域配置

          某天,我們將Spring Boot應用用Nginx反向代理。而前端跨域請求的需求不減,于是乎。

          Nginx跨域也比較簡單,只需添加以下配置即可。
          location / {
              proxy_pass http://localhost:8080;
              if ($request_method = ‘OPTIONS’) {
                  add_header ‘Access-Control-Allow-Origin’ ‘*’;
                  add_header ‘Access-Control-Allow-Methods’ ‘GET, POST, OPTIONS’;
                  add_header ‘Access-Control-Allow-Headers’ ‘DNT,X-CustomHeader,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Content-Range,Range,Token’;
                  add_header ‘Access-Control-Max-Age’ 1728000;
                  add_header ‘Content-Type’ ‘text/plain; charset=utf-8’;
                  add_header ‘Content-Length’ 0;
                  return 204;
              }
              if ($request_method = ‘POST’) {
                  add_header ‘Access-Control-Allow-Origin’ ‘*’;
                  add_header ‘Access-Control-Allow-Methods’ ‘GET, POST, OPTIONS’;
                  add_header ‘Access-Control-Allow-Headers’ ‘DNT,X-CustomHeader,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Content-Range,Range,Token’;
                  add_header ‘Access-Control-Expose-Headers’ ‘DNT,X-CustomHeader,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Content-Range,Range,Token’;
              }
              if ($request_method = ‘GET’) {
                  add_header ‘Access-Control-Allow-Origin’ ‘*’;
                  add_header ‘Access-Control-Allow-Methods’ ‘GET, POST, OPTIONS’;
                  add_header ‘Access-Control-Allow-Headers’ ‘DNT,X-CustomHeader,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Content-Range,Range,Token’;
                  add_header ‘Access-Control-Expose-Headers’ ‘DNT,X-CustomHeader,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Content-Range,Range,Token’;
              }
          }

          其中: add_header ‘Access-Control-Expose-Headers’ 務必加上你請求時所帶的header。例如本例中的“Token”,其實是前端傳給后端過來的。如果記不得也沒有關系,瀏覽器的調(diào)試器會有詳細說明。

          B.T.W,阿里云中文檔描述到Nginx也可通過crossdomain.xml配置文件跨域,不過筆者并未采用這種方式。

          CORS on Nginx

          The following Nginx configuration enables CORS, with support for preflight requests.
          #
          # Wide-open CORS config for nginx
          #
          location / {
              if ($request_method = ‘OPTIONS’) {
                  add_header ‘Access-Control-Allow-Origin’ ‘*’;
                  add_header ‘Access-Control-Allow-Methods’ ‘GET, POST, OPTIONS’;
                  #
                  # Custom headers and headers various browsers *should* be OK with but aren’t
                  #
                  add_header ‘Access-Control-Allow-Headers’ ‘DNT,X-CustomHeader,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Content-Range,Range’;
                  #
                  # Tell client that this pre-flight info is valid for 20 days
                  #
                  add_header ‘Access-Control-Max-Age’ 1728000;
                  add_header ‘Content-Type’ ‘text/plain; charset=utf-8’;
                  add_header ‘Content-Length’ 0;
                  return 204;
              }
              if ($request_method = ‘POST’) {
                  add_header ‘Access-Control-Allow-Origin’ ‘*’;
                  add_header ‘Access-Control-Allow-Methods’ ‘GET, POST, OPTIONS’;
                  add_header ‘Access-Control-Allow-Headers’ ‘DNT,X-CustomHeader,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Content-Range,Range’;
                  add_header ‘Access-Control-Expose-Headers’ ‘DNT,X-CustomHeader,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Content-Range,Range’;
              }
              if ($request_method = ‘GET’) {
                  add_header ‘Access-Control-Allow-Origin’ ‘*’;
                  add_header ‘Access-Control-Allow-Methods’ ‘GET, POST, OPTIONS’;
                  add_header ‘Access-Control-Allow-Headers’ ‘DNT,X-CustomHeader,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Content-Range,Range’;
                  add_header ‘Access-Control-Expose-Headers’ ‘DNT,X-CustomHeader,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Content-Range,Range’;
              }
          }

          瀏覽器設置跨域

          Chrome、Firefox本身是可以通過配置支持跨域請求的。

           

          贊(0)
          分享到: 更多 (0)
          網(wǎng)站地圖   滬ICP備18035694號-2    滬公網(wǎng)安備31011702889846號