什么情况下会发生跨域

跨域的本质是浏览器的同源策略 限制,当请求的目标资源与当前页面的协议、域名(主机)、端口三者中任意一个不相同,就会触发跨域。

1. 同源的判定标准

只有当两个资源的协议 、域名(主机名) 、端口 完全一致时,才属于 "同源",否则即为跨域。例如,当前页面地址为http://www.example.com:8080:

  • 同源地址:http://www.example.com:8080/page.html(三者均一致)
  • 非同源地址:只要协议、域名、端口任一不同,都算跨域。

2. 常见的跨域场景

(1)协议不同
  • 当前页面:http://www.example.com
  • 请求目标:https://www.example.com(http 与 https 协议不同)
(2)域名不同

这是最常见的跨域类型,包含多种子场景:

  1. 主域名不同
    • 当前页面:http://www.example.com
    • 请求目标:http://www.test.com(example 和 test 为主域名,完全不同)
  2. 子域名不同
    • 当前页面:http://www.example.com
    • 请求目标:http://api.example.com(www 和 api 为不同子域名)
  3. 域名与 IP 不同
    • 当前页面:http://localhost
    • 请求目标:http://127.0.0.1(localhost和 127.0.0.1 虽指向同一主机,但浏览器判定为不同域名)
(3)端口不同

HTTP 默认端口为 80,HTTPS 默认端口为 443,只要端口号不一致即跨域:

  • 当前页面:http://www.example.com:8080
  • 请求目标:http://www.example.com:8081(8080 和 8081 端口不同)
(4)特殊的跨域场景
  1. 跨域资源嵌入的特殊情况
    • 像<img>、<script>、<link>这类标签加载的资源(如图片、js 文件、css 文件),本身不会触发跨域拦截,但通过这些资源发起的数据交互(如 script 的回调、img 的加载状态传递数据)可能受同源策略限制;
  2. iframe 跨域通信
    • 当父页面和 iframe 内页面不同源时,二者无法直接通过 js 进行 DOM 操作或数据通信。

3. 跨域的核心影响

跨域限制仅存在于浏览器端 ,服务器与服务器之间的请求不受同源策略约束;浏览器的跨域拦截主要针对XMLHttpRequest 、Fetch等 AJAX 类请求,目的是保护用户的 Cookie、Session 等敏感信息不被恶意网站窃取。

相关推荐
吃一碗粉只付一碗钱5 小时前
16-SqlSugar多库ConfigId与按实体选连接
sqlserver·c#
rockey6276 小时前
AScript之字符串模板
c#·.net·script·expression·动态脚本
will_net7 小时前
Redis集群部署+Redis 链接地址放入Aollo +c#项目接入Redis
redis·c#·bootstrap
BuHuaX14 小时前
Lua 与 ToLua:运行机制及热更新原理
开发语言·unity·junit·c#·lua
asdzx6714 小时前
C# 操作 PDF 元数据:从属性写入到字段提取的完整流程
前端·pdf·c#
氷凌公子16 小时前
算法与UI拆分中遇到的问题及解决方式
c#·onnx·yolov26
1-1=017 小时前
C# 泛型
c#·.net·.netcore
椒颜皮皮虾྅2 天前
让文档不止于文字:DeploySharp + PP-Structure,打通版面分析与表格重建
开发语言·学习·c#·.net·cuda
椒颜皮皮虾྅2 天前
一套 C# 接口,解锁四类视觉任务:DeploySharp 分类、分割、关键点与旋转框实战
开发语言·分类·c#