如何解决跨域问题?

跨域

何为跨域?

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

如何解决?

  • 通过代理来避免,如使用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多平台发布

相关推荐
想进大厂的小徐4 小时前
maven的子模块和子pom的区别
java·maven
pengles4 小时前
基于RuoYi-Vue-Plus项目实现移动端项目
java·vue.js·uni-app
希望永不加班4 小时前
SpringBoot 编写第一个 REST 接口(Get/Post/Put/Delete)
java·spring boot·后端·spring
菜菜小狗的学习笔记5 小时前
Java SE(一)内部类、Lambda表达式、Stream流
java·开发语言
码云数智-园园5 小时前
Java中的重载(Overload)与重写(Override):本质区别、场景与注意事项
java·开发语言
yxm26336690815 小时前
洛谷P1217回文质数
java·开发语言
金斗潼关5 小时前
java反序列化入口方法介绍
java·开发语言·jvm·序列化·反序列化
一直都在5725 小时前
Java并发面经(二)
java·开发语言·spring
小雷君5 小时前
SpringBoot 接口开发5个高频踩坑总结
java·spring boot·后端·面试
aloha_7895 小时前
软考高项-第二章-信息技术发展
java·人工智能·python·学习