【注】本文译自:https://www.tutorialspoint.co…
跨域资源共享 (CORS) 是一个平安概念,它容许在 web 浏览器中实现对资源拜访的限度。它可防止 JavaScript 代码产生或生产别逾越不同域的申请。
例如,你的运行在 8080 端口的 web 利用试图应用 JavaScript 生产来自 9090 端口的 RESTful web 服务。在这样的情景下,你将面对 web 浏览器上跨域资源共享的平安问题。
这个问题有两个需要要解决:
- RESTful web 服务该当反对跨域资源共享。
- RESTful web 服务利用该当容许来自 8080 端口拜访 API(s)。
在本文中,咱们将具体学习如何让一个 RESTful Web 服务利用可能进行跨域申请。
在控制器办法中使能 CORS
咱们须要在控制器办法上对一个 RESTful web 服务应用 @CrossOrigin 设置源。@CrossOrigin 注解反对指定 REST API,而不是对整个利用。
@RequestMapping(value = "/products")
@CrossOrigin(origins = "http://localhost:8080")
public ResponseEntity<Object> getProduct() {return null;}
全局 CORS 配置
要定义 @Bean 以对 Spring Boot 利用全局配置 CORS。
@Bean
public WebMvcConfigurer corsConfigurer() {return new WebMvcConfigurerAdapter() {
@Override
public void addCorsMappings(CorsRegistry registry) {registry.addMapping("/products").allowedOrigins("http://localhost:9000");
}
};
}
在主 Spring Boot 利用中全局配置 CORS 的代码如下:
package com.tutorialspoint.demo;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.Bean;
import org.springframework.web.servlet.config.annotation.CorsRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
@SpringBootApplication
public class DemoApplication {public static void main(String[] args) {SpringApplication.run(DemoApplication.class, args);
}
@Bean
public WebMvcConfigurer corsConfigurer() {return new WebMvcConfigurerAdapter() {
@Override
public void addCorsMappings(CorsRegistry registry) {registry.addMapping("/products").allowedOrigins("http://localhost:8080");
}
};
}
}
当初,你创立了一个 Spring Boot web 利用,运行在 8080 端口上,RESTful web 服务利用运行在 9090 端口上。对于如何实现 RESTful Web 服务,你能够参考本系列教程的另外一部分: 生产 RESTful Web 服务 。