【注】本文译自: 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。
@Beanpublic 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;@SpringBootApplicationpublic 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 服务。