目錄 一.簡介 二.效果演示 三.源碼下載 四.猜你喜歡 零基礎 OpenGL (ES) 學習路線推薦 : OpenGL (ES) 學習目錄 >> OpenGL ES 基礎 零基礎 OpenGL (ES) 學習路線推薦 : OpenGL (ES) 學習目錄 >> OpenGL ES 轉場 零基礎 O ...
轉自:
http://www.java265.com/JavaFramework/Spring/202205/3454.html
下文筆者講述@CrossOrigin註解的功能簡介說明,如下所示:
@CrossOrigin註解的功能: 禁止Ajax訪問當前站點外的資源 如:禁止在另一個站點使用ajax訪問你的站點
CORS簡介
CORS: 全稱"跨域資源共用"(Cross-origin resource sharing) CORS:需要瀏覽器和伺服器同時支持,才可以實現跨域請求 目前幾乎所有瀏覽器都支持CORS,IE則不能低於IE10 CORS的整個過程都由瀏覽器自動完成,前端無需做任何設置,跟平時發送ajax請求並無差異 實現CORS的關鍵在於伺服器,只要伺服器實現CORS介面,就可以實現跨域通信 請求類型: CORS分為簡單請求和非簡單請求(需預檢請求)兩類
跨域(CORS)支持
Spring Framework 4.2 GA為CORS提供了第一類支持 使您比通常的基於過濾器的解決方案更容易和更強大地配置它 所以springMVC的版本要在4.2或以上版本才支持@CrossOrigin
使用方法簡介說明
controller中配置CORS
我們可在@RequestMapping註解的上面添加一個@CrossOrigin註解 則可啟用CORS(預設情況下,@CrossOrigin允許在@RequestMapping註解中指定的所有源和HTTP方法)
例:
@RestController public class TestController { @CrossOrigin @PostMapping("/test/addRecord") public CommonResult<Integer> add(@RequestBody TestController oneRecord) { // ... } @GetMapping("/test/checkRecord") public CommonResult<TestController> checkRecord(@RequestParam Integer recordId) { // ... } }
我們還可以在CrossOrigin中添加兩個參數 origins:允許可訪問的域列表 maxAge:準備響應前的緩存持續的最大時間(以秒為單位)
例:
@CrossOrigin(origins = "http://127.0.0.1:8888/api/", maxAge = 3600) @RestController public class TestController { @PostMapping("/test/oneRecord") public CommonResult<Integer> add(@RequestBody TestRecord oneRecord) { // ... } }
同時為兩個controller設置CrossOrigin註解
@CrossOrigin(maxAge = 3600) @RestController @RequestMapping("/account") public class TestController { @CrossOrigin(origins = "http://127.0.0.1:8888/api/") @PostMapping("/test/addRecord") public CommonResult<Integer> add(@RequestBody TestRecord oneRecord) { // ... } @GetMapping("/test/checkRecord") public CommonResult<TestRecord> checkRecord(@RequestParam Integer id) { // ... } }
全局配置CORS
@Configuration @EnableWebMvc public class WebConfig extends WebMvcConfigurerAdapter { @Override public void addCorsMappings(CorsRegistry registry) { registry.addMapping("/**"); } }
spring boot配置cors
/** * 跨域配置 */ @Configuration public class CorsConfig implements WebMvcConfigurer { @Bean public WebMvcConfigurer corsConfigurer() { return new WebMvcConfigurer() { @Override public void addCorsMappings(CorsRegistry registry) { registry.addMapping("/**"). allowedOrigins("http://www.java265.com"). //允許跨域的功能變數名稱,可以用*表示允許任何功能變數名稱使用 allowedMethods("*"). //允許任何方法(post、get等) allowedHeaders("*"). //允許任何請求頭 allowCredentials(true). //帶上cookie信息 //maxAge(3600)表明在3600秒內,不需要再發送預檢驗請求,可以緩存該結果 exposedHeaders(HttpHeaders.SET_COOKIE).maxAge(3600L); } }; } }