前端跨域的几种方式

前端跨域的几种方式前端跨域的几种方式

一、什么是跨域

        JavaScript出于安全方面的考虑,不允许跨域调用其他页面的对象。那什么是跨域呢,简单地理解就是因为JavaScript同源策略的限制,a.com域名下的js无法操作b.com或是c.a.com域名下的对象。
        当协议、子域名、主域名、端口号中任意一个不相同时,都算作不同域。不同域之间相互请求资源,就算作“跨域”。

        有一点必须要注意:跨域并不是请求发不出去,请求能发出去,服务端能收到请求并正常返回结果,只是结果被浏览器拦截了。之所以会跨域,是因为受到了同源策略的限制,同源策略要求源相同才能正常进行通信,即协议、域名、端口号都完全一致。

二、什么是同源策略及其限制

        同源策略限制从一个源加载的文档或脚本如何与来自另一个源的资源进行交互。这是一个用于隔离潜在恶意文件的关键的安全机制。它的存在可以保护用户隐私信息,防止身份伪造等(读取Cookie)。

 同源策略限制内容有:

        Cookie、LocalStorage、IndexedDB 等存储性内容

        DOM 节点

        AJAX 请求不能发送

但是有三个标签是允许跨域加载资源:

        image标签

        link标签

        script标签

 三、前端跨域的几种方式

1.JSONP原理

        利用script元素的这个开放策略,网页可以得到从其他来源动态产生的 JSON 数据。

        但是JSONP请求一定需要对方的服务器做支持才可以。

        JSONP优点是兼容性好,可用于解决主流浏览器的跨域数据访问的问题。

        缺点是仅支持get方法具有局限性。

2.CORS原理

        实现CORS通信的关键是服务器,需要在服务器端做一些小小的改造。

        只要服务器实现了CORS接口,就可以跨源通信。

        在响应头上添加Access-Control-Allow-Origin属性,指定同源策略的地址。同源策略默认地址是网页的本身。只要浏览器检测到响应头带上了CORS,并且允许的源包括了本网站,那么就不会拦截请求响应。

3.Nginx

        浏览器在访问受限时,可通过不受限的代理服务器访问目标站点。

        proxy代理是前端用的最多的解决跨域的方法。

        即配置一台和浏览器相同端口的服务器,浏览器访问代理服务器,代理服务器向目标服务器发送请求,由于服务器之间不存在跨域问题,代理服务器就可以拿到请求数据,而后因为浏览器和代理服务器端口号一致,不存在跨域问题,因此浏览器不会拦截从代理服务器收到的数据,顺利拿到请求数据。

        例如:浏览器端口号8080,目标服务器端口号5000,在vue中配置代理服务器来访问目标服务器

// vue.config.js中配置代理 devServer:{ proxy:"http://localhost:5000" } // 使用代理 axios.get('http://localhost:8080/students').then( response => { console.log('请求成功了',response.data) }, error => { console.log('请求失败了',error.message) } )

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/212556.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月18日 下午7:47
下一篇 2026年3月18日 下午7:47


相关推荐

  • css里的clear_css取消某个样式

    css里的clear_css取消某个样式clear:both清除两边,没有用的clear:left清除左边,没有用的clear:right清除右边,没用的

    2025年10月29日
    3
  • SPSS实现重复测量方差分析

    SPSS实现重复测量方差分析总目录 SPSS 学习整理 SPSS 实现重复测量方差分析目的适用情景数据处理 SPSS 操作知识点目的观察一个指标是否因为多次测量而变化 或是否受时间影响 适用情景方差分析前提 各个总体服从正态分布各个总体方差相等观测值独立数据处理 SPSS 操作基本信息显示第二个方案平均值都比第一个方案高 P 0 675 gt 0 05 接受原假设 认为协方差矩阵没有差异 三次销售量误差方差没有显著差异 月份的四种检验 P 值均小于 0 05 拒绝原假设 认为月份之间对销量存在显著差异 而月份 销量显

    2026年3月26日
    2
  • 全球爆火智能体OpenClaw,或将上线百度App

    全球爆火智能体OpenClaw,或将上线百度App

    2026年3月13日
    3
  • spss 13.0 英文正式版14个模块的授权号码

    spss 13.0 英文正式版14个模块的授权号码

    2021年5月3日
    157
  • 黑客技术之初学者编程入门「建议收藏」

    黑客技术之初学者编程入门「建议收藏」你是否曾经在用别人开发的工具尝试“入侵”.你是否希望开发出自己的黑器……相信很多人有着这种近似相同的经历。本章将简单介绍黑客编程及工具开发。如果你是初学编程,如果你从来没有接触过黑客软件的开发,如果你急于想了解黑客编程方面的知识……那么就请继续往下阅读。编程语言和开发环境的选择初学者刚开始学习编程语言最头疼的问题就是如何选择编程语言及合适的开发环境,下面就来具体介绍一下。有

    2022年5月18日
    77
  • Silverlight群建立了,欢迎加入SilverlightQQ群!

    Silverlight群建立了,欢迎加入SilverlightQQ群!Silverlight群建立了,欢迎加入SilverlightQQ群,一切关于WPF(Windows Presentation Foundation)&Silverlight(RIA程序开发),欢迎大家上传Silverlight共享文档 加群者:”Silverlight爱好者或WPF爱好者”即可,拒绝潜水份子…群号:50992947论坛上的http://topic.csdn.n

    2022年7月17日
    15

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号