全面了解跨域及其解决方案:十个实用技巧

跨域的解决方法
后台解决方法:

header(‘Access-Control-Allow-Origin:*‘); // header可以允许特定的域名访问请求

jsonp也支持跨域,如何获取返回的数据:

web页面调用js文件则不受跨域的影响
凡是拥有“src”这个属性的标签都拥有跨域的能力,比如script、img、iframe

框架中的解决方法:

vue-cli中axios有跨域代理设置(即使服务器没有设置header,也可以跨域)
devServer: {
    //proxy: ‘http://localhost:80‘
    proxy: ‘http://www.wenxuesucai.com:80‘
},

反向代理:

例如,在Nginx中设置反向代理来解决跨域问题。通过配置Nginx,可以将对某个域名的请求转发到实际的服务器地址,从而实现跨域访问34。

代理:

在服务端设置代理,让客户端请求代理服务器,再由代理服务器向目标服务器发送请求,最后将结果返回给客户端。这种方式可以有效地绕过浏览器的同源策略限制2。

网关中解决:

在网关层(如Spring Cloud Gateway)中解决跨域问题。通过配置网关的跨域策略,可以统一处理跨域请求,而无需在每个服务中单独设置

postMessage:

在浏览器中,通过window.postMessage()方法,可以在不同的窗口之间传递数据,从而实现跨域通信2。

客户端电脑的解决方法(适用于调试):

    直接配置本地电脑的hosts文件就可以,将数据接口的域名和本地配置的域名保持一致
    C:WindowsSystem32driversetchosts

hosts:
    # Copyright (c) 1993-2009 Microsoft Corp.
    #
    # This is a sample HOSTS file used by Microsoft TCP/IP for Windows.
    #
    # This file contains the mappings of IP addresses to host names. Each
    # entry should be kept on an individual line. The IP address should
    # be placed in the first column followed by the corresponding host name.
    # The IP address and the host name should be separated by at least one
    # space.
    #
    # Additionally, comments (such as these) may be inserted on individual
    # lines or following the machine name denoted by a ‘#‘ symbol.
    #
    # For example:
    #
    #      102.54.94.97     rhino.acme.com          # source server
    #       38.25.63.10     x.acme.com              # x client host
    
    # localhost name resolution is handled within DNS itself.
    #
127.0.0.1       localhost
    #
::1             localhost
    
    127.0.0.1 a.com
    127.0.0.1 b.com
    127.0.0.1 c.com
    127.0.0.1 test.payfu.store

浏览器自带的方法:

谷歌的不安全模式页支持跨域
给谷歌浏览器添加跨域插件,cors
    更多工具 -> 扩展程序 -> 打开开发者模式 -> 点击“扩展程序”的图标,打开chrome网上应用店

同源政策:导致了跨域的产生

同源策略是一个重要的安全策略,它用于限制一个origin的文档或者它加载的脚本如何能与另一个源的资源进行交互。它能帮助阻隔恶意文档,减少可能被攻击的媒介。
同源:协议、域名、接口同时相同

js跨域是指通过js在不同的域之间进行数据传输或通信。只要协议、域名、端口有任何一个不同,都被当作是不同的域
跨域是因为后台接口文件和web前端文件不在同一个域名下,浏览器拦截了后台发送的数据

跨域的案例:
基于同一父域的子域之间,如:a.c.com和b.c.com
基于不同的父域之间,如:www.a.com和www.b.com
端口的不同,如:www.a.com:8080和www.a.com:8088
协议不同,如:http://www.a.com和https://www.a.com

免费的API接口开放平台

  • 7
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值