您当前位置:资讯中心 >开发 >浏览文章

解决跨域问题的八种方法,含网关、Nginx 和 SpringBoot

来源:不详 日期:2024/1/25 11:04:51 阅读量:(0)

跨域问题是浏览器为了保护用户的信息安全,实施了同源策略(Same-Origin Policy),即只允许页面请求同源(相同协议、域名和端口)的资源,当 JavaScript 发起的请求跨越了同源策略,即请求的目标与当前页面的域名、端口、协议不一致时,浏览器会阻止请求的发送或接收。

解决跨域问题方案

跨域问题可以从以下方面解决:

  • 应用层面解决:例如 Spring Boot 项目中解决跨域问题。
  • 反向代理解决:例如 Nginx 中解决跨域问题。
  • 网关中解决:例如 Spring Cloud Gateway 中解决跨域问题。

而这 3 类解决方案,总共包含了 8 种解决方案,一起来看。

1、Spring Boot 中解决跨域

在 Spring Boot 中跨域问题有以下 5 种解决方案:

  • 使用 @CrossOrigin 注解实现跨域【局域类跨域】
  • 通过配置文件实现跨域【全局跨域】
  • 通过 CorsFilter 对象实现跨域【全局跨域】
  • 通过 Response 对象实现跨域【局域方法跨域】
  • 通过实现 ResponseBodyAdvice 实现跨域【全局跨域】

接下来详细来看。

(1)通过注解跨域

使用 @CrossOrigin 注解可以轻松的实现跨域,此注解既可以修饰类,也可以修饰方法。当修饰类时,表示此类中的所有接口都可以跨域;当修饰方法时,表示此方法可以跨域,它的实现如下:

import org.springframework.web.bind.annotation.CrossOrigin;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.HashMap;
@RestController
@CrossOrigin(origins = "*")
public class TestController {
    @RequestMapping("/test")
    public HashMap<String, Object> test() {
        return new HashMap<String, Object>() {{
            put("state", 200);
            put("data", "success");
            put("msg", "");
        }};
    }
}
关键字:
声明:我公司网站部分信息和资讯来自于网络,若涉及版权相关问题请致电(63937922)或在线提交留言告知,我们会第一时间屏蔽删除。
有价值
0% (0)
无价值
0% (10)

分享转发:

发表评论请先登录后发表评论。愿您的每句评论,都能给大家的生活添色彩,带来共鸣,带来思索,带来快乐。