Spring Boot - CORS跨域

Spring Boot - CORS跨域 首页 / Spring Boot入门教程 / Spring Boot - CORS跨域

跨域资源共享(CORS)是一种安全概念,它可以限制在Web浏览器中实现的资源。它可以防止JavaScript代码针对不同来源生成或使用请求。

例如,您的Web应用程序在8080端口上运行,并且您通过使用JavaScript尝试从9090端口使用RESTful Web服务。在这种情况下,您将在Web浏览器上遇到跨域资源共享安全问题。

在本章中,无涯教程将详细学习如何为RESTful Web Service应用程序启用跨域请求。

控制器启用CORS

需要通过对控制器方法使用 @CrossOrigin 批注来设置RESTful Web服务的来源。此@CrossOrigin批注支持特定的REST API,而不支持整个应用程序。

@RequestMapping(value="/products")
@CrossOrigin(origins="http://localhost:8080")

public ResponseEntity<Object> getProduct() {
   return null;
}

全局CORS配置

无涯教程需要定义显示的@Bean配置,以全局设置Spring引导应用程序对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.learnfk.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");
         }
      };
   }
}

现在,您可以创建一个在8080端口上运行的Spring Boot Web应用程序,以及一个可以在9090端口上运行的RESTful Web服务应用程序。有关实现RESTful Web服务的更多详细信息,可以参考本教程标题为使用RESTful Web服务的章节。

祝学习愉快!(内容编辑有误?请选中要编辑内容 -> 右键 -> 修改 -> 提交!)

技术教程推荐

从0开始做增长 -〔刘津〕

玩转webpack -〔程柳锋〕

etcd实战课 -〔唐聪〕

程序员的个人财富课 -〔王喆〕

零基础实战机器学习 -〔黄佳〕

业务开发算法50讲 -〔黄清昊〕

超级访谈:对话毕玄 -〔毕玄〕

Python实战 · 从0到1搭建直播视频平台 -〔Barry〕

结构思考力 · 透过结构看表达 -〔李忠秋〕

好记忆不如烂笔头。留下您的足迹吧 :)