欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

SpringBoot如何解決跨域問題-創(chuàng)新互聯

這篇“SpringBoot如何解決跨域問題”文章的知識點大部分人都不太理解,所以小編給大家總結了以下內容,內容詳細,步驟清晰,具有一定的借鑒價值,希望大家閱讀完這篇文章能有所收獲,下面我們一起來看看這篇“SpringBoot如何解決跨域問題”文章吧。

目前成都創(chuàng)新互聯已為成百上千家的企業(yè)提供了網站建設、域名、雅安服務器托管綿陽服務器托管、企業(yè)網站設計、通江網站維護等服務,公司將堅持客戶導向、應用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協(xié)力一起成長,共同發(fā)展。

什么是跨域

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

例如:a頁面想獲取b頁面資源,如果a、b頁面的協(xié)議、域名、端口、子域名不同,所進行的訪問行動都是跨域的,而瀏覽器為了安全問題一般都限制了跨域訪問,也就是不允許跨域請求資源。注意:跨域限制訪問,其實是瀏覽器的限制。理解這一點很重要?。。?/p>

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

SpringBoot如何解決跨域問題

java解決CORS跨域請求的方式

對于CORS的跨域請求,主要有以下幾種方式可供選擇:

  • 返回新的CorsFilter

  • 重寫 WebMvcConfigurer

  • 使用注解 @CrossOrigin

  • 手動設置響應頭 (HttpServletResponse)

  • 自定web filter 實現跨域

注意:

  • CorFilter / WebMvConfigurer / @CrossOrigin 需要 SpringMVC 4.2以上版本才支持,對應springBoot 1.3版本以上。

  • 上面前兩種方式屬于全局 CORS 配置,后兩種屬于局部 CORS配置。如果使用了局部跨域是會覆蓋全局跨域的規(guī)則,所以可以通過 @CrossOrigin 注解來進行細粒度更高的跨域資源控制。

  • 其實無論哪種方案,最終目的都是修改響應頭,向響應頭中添加瀏覽器所要求的數據,進而實現跨域。

返回新的CorsFilter(全局跨域)

在任意配置類,返回一個 新的 CorsFIlter Bean ,并添加映射路徑和具體的CORS配置路徑。

@Configuration
public class GlobalCorsConfig {

    @Bean
    public CorsFilter corsFilter() {
        //1. 添加 CORS配置信息
        CorsConfiguration config = new CorsConfiguration();
        //放行哪些原始域
        config.addAllowedOrigin("*");
        //是否發(fā)送 Cookie
        config.setAllowCredentials(true);
        //放行哪些請求方式
        config.addAllowedMethod("*");
        //放行哪些原始請求頭部信息
        config.addAllowedHeader("*");
        //暴露哪些頭部信息
        config.addExposedHeader("*");
        //2. 添加映射路徑
        UrlBasedCorsConfigurationSource corsConfigurationSource = new UrlBasedCorsConfigurationSource();
        corsConfigurationSource.registerCorsConfiguration("/**",config);
        //3. 返回新的CorsFilter
        return new CorsFilter(corsConfigurationSource);
    }
}

重寫WebMvcConfigurer(全局跨域)

@Configuration
public class CorsConfig implements WebMvcConfigurer {

    @Override
    public void addCorsMappings(CorsRegistry registry) {
        registry.addMapping("/**")
                //是否發(fā)送Cookie
                .allowCredentials(true)
                //放行哪些原始域
                .allowedOrigins("*")
                .allowedMethods(new String[]{"GET", "POST", "PUT", "DELETE"})
                .allowedHeaders("*")
                .exposedHeaders("*");
    }
}

使用注解 (局部跨域)

在控制器(類上)上使用注解 @CrossOrigin:,表示該類的所有方法允許跨域。

@RestController
@CrossOrigin(origins = "*")
public class HelloController {

    @RequestMapping("/hello")
    public String hello() {
        return "hello world";
    }
}

在方法上使用注解 @CrossOrigin:

  @RequestMapping("/hello")
  @CrossOrigin(origins = "*")
   //@CrossOrigin(value = "http://localhost:8081") //指定具體ip允許跨域
  public String hello() {
        return "hello world";
  }

手動設置響應頭(局部跨域)

使用 HttpServletResponse 對象添加響應頭(Access-Control-Allow-Origin)來授權原始域,這里 Origin的值也可以設置為 “*”,表示全部放行。

@RequestMapping("/index")
public String index(HttpServletResponse response) {

    response.addHeader("Access-Allow-Control-Origin","*");
    return "index";
}

使用自定義filter實現跨域

首先編寫一個過濾器,可以起名字為MyCorsFilter.java

package cn.wideth.aop;

import java.io.IOException;
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.http.HttpServletResponse;
import org.springframework.stereotype.Component;

@Component
public class MyCorsFilter implements Filter {

  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", "POST, GET, OPTIONS, DELETE");
    response.setHeader("Access-Control-Max-Age", "3600");
    response.setHeader("Access-Control-Allow-Headers", "x-requested-with,content-type");
    chain.doFilter(req, res);
    
  }
  
  public void init(FilterConfig filterConfig) {}
  public void destroy() {}
}

以上就是關于“SpringBoot如何解決跨域問題”這篇文章的內容,相信大家都有了一定的了解,希望小編分享的內容對大家有幫助,若想了解更多相關的知識內容,請關注創(chuàng)新互聯行業(yè)資訊頻道。

網頁題目:SpringBoot如何解決跨域問題-創(chuàng)新互聯
當前鏈接:http://aaarwkj.com/article18/ddddgp.html

成都網站建設公司_創(chuàng)新互聯,為您提供域名注冊、網站設計、品牌網站設計服務器托管、動態(tài)網站搜索引擎優(yōu)化

廣告

聲明:本網站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯

綿陽服務器托管
亚洲成人午夜激情的三级网| 免费人成网站在线观看| 欧美高清在线观看一区二区| 亚洲精品中文字幕码专区| 久久久精品在线免费视频| 黄色片黄色片美女黄色片亚洲黄色片 | 中文字幕乱码人妻一区二| av一区二区日韩精品久| 日韩视频一区二区三区四区| 99热只有这里才有精品| 一区二区三区三级视频| 后入蜜桃臀美女在线观看| 国产农村妇女一区二区三区| 91亚洲精品一区二区三区| 美女床上激情啪啪网页| 下载一个日韩暴力黄色录像| 欧美福利免费在线视频| 久久碰国产一区二区三区| 欧美精品欧美激情免费区| 中文字幕在线精品乱码麻豆| 风韵丰满熟妇老熟女啪啪| 国产精品欧美日韩精品| 国产精品中文字幕有码| 中文精品字幕人妻熟女小妇| 97成人在线视频免费播放| 日韩色欧美色国产精品| 日韩特级黄片在线免费观看| 男人的天堂av免费看看| 亚洲av成人在线不卡| 国产成+人+综合+亚洲专区| 日本精品视频免费网| 精品一级人片内射视频| 97免费观看在线观看| 中文字幕日本乱码精品久久| 亚洲自偷精品视频自拍| 熟女亚洲一区精品久久| 成人18禁视频免费看| 青青草最新网址在线观看视频 | 手机在线观看av大片| 欧美日本一区二区四区| 国产精品av在线网站|