首页 > 其他分享 >什么是跨域?如何解决跨域?

什么是跨域?如何解决跨域?

时间:2023-10-12 13:14:58浏览次数:32  
标签:常用 浏览器 跨域 如何 WebSocket 同源 解决 服务器

跨域,是因为浏览器中存在同源策略。同源策略是指:当请求的协议、域名、和端口三者有任何一个不同时,浏览器会自动阻止请求,产生了跨域。目的是防止加载恶意资源。

解决方案:
总:知道六种,常用两种。
分:1.CORS(跨域资源共享):直接让后台开放跨域,前端不需要任何操作。(常用)
2. 服务器反向代理:(常用)

  1. 原理:
    1. 只有浏览器与服务器通信时,同源策略,才会发生。
    2. 服务器与服务器通信时,不会有同源策略限制,因此不会产生跨域。
    3. 浏览器、后台服务器之间,再设置一个代理服务器,代理服务器开放跨域。
  2. 实施:
    1. 开发环境:devServer
    2. 生成环境:Nginx
  3. 示意图:
  4. JSONP:(不常用)
    1. 原理:有些标签 script、img、link、iframe ... 这些标签不存在跨域请求的限制,就是利用这个特点解决跨域问题。
    2. 优点:简单适用,兼容性好(可以兼容低版本IE).
    3. 缺点:只支持 get 请求,不支持 post 请求,导致数据不安全
  5. WebSocket:(不常用)
    1. 原理:WebSocket是一种全双工通信协议,它能够在客户端和服务器之间建立一个持久性的连接,在这个连接上双方可以随时发送或接收数据。WebSocket协议不受同源策略的限制,因此可以在跨域的情况下进行通信。
  6. postMessage:(不常用)
    1. 原理:HTML5 中提供的 postMessage API,可以在不同的窗口之间传递数据,即使这些窗口来自不同的源,也可以实现跨域通信。
  7. Hash:(不常用)
    1. 原理:通过改变URL中的hash值来进行跨域通信。

标签:常用,浏览器,跨域,如何,WebSocket,同源,解决,服务器
From: https://www.cnblogs.com/sxgwyf/p/17759232.html

相关文章

  • 如何提高爬虫IP时效,解决被封IP的问题呢?
    随着互联网的普及,越来越多的人开始使用爬虫技术来获取各种信息。然而,爬虫技术的发展也带来了一些问题,其中最突出的问题就是IP被封禁。那么,如何提高爬虫IP时效,解决被封IP的问题呢?首先,我们需要了解为什么会被封禁。一般来说,爬虫被封禁的原因主要有两个:一是访问频率过高,二是访问目标站......
  • 面试官:Redis 分布式锁如何自动续期
    1、Redis实现分布式锁指定一个key作为锁标记,存入Redis中,指定一个唯一的用户标识作为value。当key不存在时才能设置值,确保同一时间只有一个客户端进程获得锁,满足互斥性特性。设置一个过期时间,防止因系统异常导致没能删除这个key,满足防死锁特性。当处理完业务之后需要清除......
  • 体验提升-一个“小技巧”彻底解决锦礼商品可见不可售 | 京东云技术团队
    一、背景锦礼平台,作为一家企业级B2B2C电商平台,同时服务于企业客户和企业员工,因此需要遵循企业客户的政策规范,确保商城内商品符合规定,并提升员工购物体验。然而,这种独特的运营模式导致锦礼平台上商品的可见不可售问题较为突出,对最终消费者的购物体验和平台的产品和业务产生了较大的......
  • 堪比Copilot平替?亚马逊云科技Amazon CodeWhisperer在开发效率提升上究竟如何
    说明 GitHubcopilot虽然很强,但是每个月的使用金额并不低,而亚马逊云科技AmazonCodeWhisperer免费支持多种编程语言的AI编程,甚至被网友称为GitHubcopilot平替?!  工具安装 如果你已经有vscode请忽略本章节,以python为例,安装python环境,把这个链接复制到浏览器下载python,注意操作系......
  • 如何封禁IP和IP段 看完这篇我会了
    1、写在前面Nginx不仅仅只是一款反向代理和负载均衡服务器,它还能提供很多强大的功能,例如:限流、缓存、黑白名单和灰度发布等等。在之前的文章中,我们已经介绍了Nginx提供的这些功能。今天,我们来介绍Nginx另一个强大的功能:禁用IP和IP段。2、禁用IP和IP段Nginx的ngx_http_access_module......
  • 面试官:跨库多表存在大量数据依赖问题有哪些解决方案
    1、前言曾经设计的一个供应链系统中,存在商品、销售订单、采购这三个服务,它们的主数据的部分结构如下所示:商品:订单和子订单:采购单和子订单:在设计这个供应链系统时,我们需要满足以下两个需求:根据商品的型号/分类/生成年份/编码等查找订单;根据商品的型号/分类/生成年份/编码等查找采购......
  • 面试官:ConcurrentHashMap 是如何保证线程安全的
    1、前言阅读此篇文章,你需要有以下知识基础Java内存模型,可见性问题CASHashMap底层原理我们知道,在日常开发中使用的HashMap是线程不安全的,而线程安全类HashTable只是简单的在方法上加锁实现线程安全,效率低下,所以在线程安全的环境下我们通常会使用ConcurrentHashMap,但是又为何需要学习......
  • 如何保证缓存与数据库双写时的数据一致性
    1、背景在做系统优化时,想到了将数据进行分级存储的思路。因为在系统中会存在一些数据,有些数据的实时性要求不高,比如一些配置信息。基本上配置了很久才会变一次。而有一些数据实时性要求非常高,比如订单和流水的数据。所以这里根据数据要求实时性不同将数据分为三级。第1级:订单数据和......
  • DAY 256 如何防止循环导入
    防止循环导入是编程中的常见问题,特别是在使用模块化的编程语言中。以下是一些方法来避免循环导入:1.**重构代码**:重新组织你的代码,将重要的功能放在单独的模块中,以减少模块之间的相互依赖。2.**使用导入语句**:在需要的时候才在函数内导入模块,而不是在模块的顶部导入。这样可以......
  • 报错解决:java.security.InvalidKeyException: Illegal key size(微信支付v3遇到的问
    前言在使用微信支付v3生成jar包后本地测试没有问题在开发小程序支付功能的时候:本地开发好好的,放在linux服务器上运行时碰到报错原因是因为微信支付256位秘钥加密解密策略 可能会导致某些jdk的版本加密解密出现问题解决首先观察你这个目录下的文件根据文件内容做判断看下......