码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • Spring Boot文档阅读笔记-CORS Support


    跨域资源共享(CORS)是一个安全概念,用于限制浏览器获取资源。防止JS代码,从不同的源头发起请求。

    如下例子:Spring Boot的web应用使用的是8080端口,而JS是通过9090端口调用web应用的restful的API。在这样的场景下,就会发现Cross-Origin Resource Sharing的安全隐患。

    要处理这种问题,需要进行两步:

    ①Web服务端应支持Cross-Origin Resource Sharing。

    ②将这个跨越资源共享设置到Web服务的8080端口上。

    在Controller方法上允许CORS

    使用在Controller的方法上使用@CrossOrigin注解就可以允许跨域资源共享了。

    1. @RequestMapping(value = "/products")
    2. @CrossOrigin(origins = "http://localhost:8080")
    3. public ResponseEntity getProduct() {
    4. return null;
    5. }
    6. 全局的CORS配置

      使用@Bean注解配置CORS。

      1. @Bean
      2. public WebMvcConfigurer corsConfigurer() {
      3. return new WebMvcConfigurerAdapter() {
      4. @Override
      5. public void addCorsMappings(CorsRegistry registry) {
      6. registry.addMapping("/products").allowedOrigins("http://localhost:9000");
      7. }
      8. };
      9. }

      在Spring Boot加载这个Bean。

      1. package com.tutorialspoint.demo;
      2. import org.springframework.boot.SpringApplication;
      3. import org.springframework.boot.autoconfigure.SpringBootApplication;
      4. import org.springframework.context.annotation.Bean;
      5. import org.springframework.web.servlet.config.annotation.CorsRegistry;
      6. import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
      7. import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
      8. @SpringBootApplication
      9. public class DemoApplication {
      10. public static void main(String[] args) {
      11. SpringApplication.run(DemoApplication.class, args);
      12. }
      13. @Bean
      14. public WebMvcConfigurer corsConfigurer() {
      15. return new WebMvcConfigurerAdapter() {
      16. @Override
      17. public void addCorsMappings(CorsRegistry registry) {
      18. registry.addMapping("/products").allowedOrigins("http://localhost:8080");
      19. }
      20. };
      21. }
      22. }

      这里个人补充下还有一种更简单方法:

      1. @configuration
      2. public class CorsConfig implements WebMvcConfigurer{
      3. @Override
      4. public void addCorsMappings(CorsRegistry registry){
      5. registry.addMaping("/**")
      6. .allowedOrigins("*")
      7. .allowCredentails(true)
      8. .allowedMethods("GET", "POST")
      9. .maxAge(3600);
      10. }
      11. }

      其中

      addMapping:配置可被跨越的路径;

      allowedOrigins:*为所有,所有域都可以来获取资源;

      allowCredentials:将请求的响应暴露给页面;

      allowedMethods:允许的请求头。

    7. 相关阅读:
      idea 中Maven项目转Gradle项目
      Spring Boot整合Swagger
      Redis从入门到放弃(12):pipeline管道技术
      java虚拟机详解篇一(基础)
      Cube MX 开发过程配置中PWM无法输出问题
      表存储数据模型:宽列和时间序列
      Git | Git基本命令
      Git版本控制管理——补丁
      免费小程序商城搭建之b2b2c o2o 多商家入驻商城 直播带货商城 电子商务b2b2c o2o 多商家入驻商城 直播带货商城 电子商务
      mybatis代码自动生成插件
    8. 原文地址:https://blog.csdn.net/qq78442761/article/details/126027097
      • 最新文章
      • 沪漂五周年了:我越来越迷茫了
        Agentic Skill Routing 实战:别再把所有 Skill 塞进 AI Agent 上下文
        MySQL-Seconds_behind_master的精度误差
        [MAF预定义ChatClient中间件-03]CachingChatClient——利用缓存省钱省时间
        AI的至暗历史:从万众期待到被政府撤资,AI的两次死亡徘徊
        Agent OS :五种驯服不确定性的范式
        PortSwigger SQL注入LAB11
        数据库即时编译JIT
        [Begin]AI Learn Data Day 0
        深度学习进阶(二十七)现代 LLM 的核心架构设计其二:SwiGLU
      • 热门文章
      • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
        奉劝各位学弟学妹们,该打造你的技术影响力了!
        五年了,我在 CSDN 的两个一百万。
        Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
        面试官都震惊,你这网络基础可以啊!
        你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
        心情不好的时候,用 Python 画棵樱花树送给自己吧
        通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
        13 万字 C 语言从入门到精通保姆级教程2021 年版
        10行代码集2000张美女图,Python爬虫120例,再上征途
      小工具 小游戏
      Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1

      京公网安备 11010502049817号