如何解决跨域问题?

跨域

何为跨域?

这就需要了解浏览器的同源策略,所谓同源是指 '协议+域名+端口'三者相同,而跨域就是非同源的请求

如何解决?

  • 通过代理来避免,如使用nginx在后端转发请求,来避免前端出现跨域

    在server块中增加

    bash 复制代码
    # 允许跨域请求的域,*代表所有
    add_header 'Access-Control-Allow-Origin' *;
    # 允许带上cookie请求
    add_header 'Access-Control-Allow-Credentials' 'true';
    # 允许请求的方法 GET POST等
    add_header 'Access-Control-Allow-Methods' *;
    # 允许请求的header
    add_header 'Access-Control-Allow-Headers' *;
  • 使用jsonp

    浏览器的同源策略不包含<script>、<img>、<iframe>这几个标签,而jsonp就是利用<script>标签跨域特性来进行的跨域数据访问,其原理是与服务器端约定好一个函数名,服务端接收到请求后,将返回一段JavaScript,在这段JavaScript代码中调用约定好的回调函数,并且将数据作为参数进行传递,当网页接收到这段JavaScript后,就会执行回调函数,数据就成功传输到客户端了

    其缺点是只支持GET请求

  • 在web项目中配置过滤器或拦截器来解决跨域

    java 复制代码
    httpServletResponse.setHeader("Access-Control-Allow-Origin", origin);
    httpServletResponse.setHeader("Access-Control-Allow-Credentials", "true");
    httpServletResponse.setHeader("Access-Control-Allow-Methods", "POST, GET, OPTIONS");
    httpServletResponse.setHeader("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept");

zhhll.icu/2023/javawe...

本文由mdnice多平台发布

相关推荐
win x8 小时前
JavaSE(基础)高频面试点及 知识点
java·面试·职场和发展
Terio_my8 小时前
简要 Java 面试题学习
java·开发语言·学习
好好研究9 小时前
Spring Boot - Thymeleaf模板引擎
java·spring boot·后端·thymeleaf
爬山算法9 小时前
Hibernate(76)如何在混合持久化环境中使用Hibernate?
java·后端·hibernate
编程彩机9 小时前
互联网大厂Java面试:从分布式缓存到消息队列的技术场景解析
java·redis·面试·kafka·消息队列·微服务架构·分布式缓存
她说..9 小时前
策略模式+工厂模式实现单接口适配多审核节点
java·spring boot·后端·spring·简单工厂模式·策略模式
坚持就完事了9 小时前
Java的OOP
java·开发语言
像少年啦飞驰点、9 小时前
零基础入门 Spring Boot:从“Hello World”到可部署微服务的完整学习路径
java·spring boot·微服务·编程入门·后端开发
undsky_10 小时前
【RuoYi-SpringBoot3-Pro】:将 AI 编程融入传统 java 开发
java·人工智能·spring boot·ai·ai编程
不光头强10 小时前
shiro学习要点
java·学习·spring