乐趣区

关于程序员:如何解决跨域问题

跨域

何为跨域?

这就须要理解浏览器的同源策略,所谓同源是指‘协定 + 域名 + 端口’三者雷同,而跨域就是非同源的申请

如何解决?

  • 通过代理来防止,如应用 nginx 在后端转发申请,来防止前端呈现跨域

    在 server 块中减少

    # 容许跨域申请的域,* 代表所有
    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 我的项目中配置过滤器或拦截器来解决跨域

    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");

    https://zhhll.icu/2023/javaweb/ 问题 /8. 跨域 /

本文由 mdnice 多平台公布

退出移动版