自己的图片被别的网站直接引用时,靠哪个响应头决定放不放行

📅 2026-10-12 👁️ 0

自己的图片被别的网站直接引用时,靠哪个响应头决定放不放行,这个头的解释权在资源一方,而不是引用它的那一站。Cross-Origin-Resource-Policy 就是由资源自己声明的一层策略:它告诉浏览器,这份资源允许被哪些来源加载,不符合声明的跨站请求就在客户端被挡下来。要放行还是收紧,改的是自己站点上资源的响应头,对方站点无需配合。

谁有权声明资源能被谁引用

一层容易混淆的地方在于,页面和它可以引用的资源分属两方。发起页面那侧的隔离头说的是「我这个上下文里允许装进来什么」,资源这侧的声明说的是「我这份东西能让谁拿去用」。同一个跨站引用能不能成,取决于两端声明的交集,任何一端收紧都会导致加载失败。所以排查时不要只盯着出错页面,被引用资源的响应头里有没有合适的策略,是另一条独立的线索。

三个取值分别放行到哪一层

取值 放行到哪一层 适合哪类资源 放开之后的代价
same-origin(同源) 只有同一来源的页面能加载 后台附件、内部预览图 站点自己的域名换协议或换端口就会读不到
same-site(同站) 同一注册域下的多个来源都能加载 主站与子站共用的一组素材 同注册域里任意子站都能引用,扩散范围不再受控
cross-origin(跨来源) 任意其他来源都能加载 需要对外分发的图、字体 别人的站点直接消耗你的带宽与访问统计

三档之间不是宽严的偏好问题,而是资源准备让谁用。同一份文件挂到不同目录,取值也可以不同,粒度是按响应来的。

默认挡住的是哪一类请求

这层策略针对的是不带 cors 的跨来源或跨站请求,也就是图片、脚本、样式这类直接以子资源形式加载的请求。浏览器读到收紧的声明,就把这类请求挡在客户端,资源的响应本身仍然照常发出,服务端并不参与判断。这一点决定了它的作用面:管得住浏览器要不要显示,管不住有人绕过浏览器直接要文件。

图片与字体各自要不要放开

图片常被站外引用,收紧到同源会立刻在自家别的子站上也看不到,放开到跨来源又要接受带宽被消耗。字体往往必须放开到跨来源,因为引用它的页面本来就来自别的站点,挡下来等于字体全站失效。两者取舍通常按目录区分:需要外发的素材走一条带宽松声明的路径,站内专用素材保持收紧。

这层声明挡不住什么

站内的防采集干扰码针对的是内容被拿走之后怎么处理——它作用在正文内容里,用来降低批量搬运得到的东西的质量。资源来源策略是另一层,只管浏览器加载这一步。把两者当同一件事,容易出现「图都在,采集却拿走了正文」的判断偏差。真要减少被直接引用的消耗,还得回到来源声明、目录划分与访问量控制这几处。

常见问题

问:只改发起页面的隔离头够不够? 答:不够。被引用资源这侧的声明是独立一层,两端都放行才能加载成功;资源方收紧时,页面侧再宽松也不会放开。

问:换协议或换端口会不会影响同源判断? 答:会。同源看的是协议、主机与端口三项,任意一项不同就不算同源,这类改动常把原本正常的图片判断成跨来源。

问:设成跨来源是不是等于允许抓取? 答:不等于。这层只决定浏览器让不让某个来源加载这份资源,对直接请求文件的抓取行为没有约束力。

相关文章

连接还没握完就收到请求,服务器为什么宁可返回一个过早状态码

TLS 的早期数据让客户端在第一个往返里就把请求发出去,省下一次握手等待,代价是这类请求存在被重放的风险。425 Too Early 表示服务器不愿冒险处理一个可能被重放的请求,宁可先拒。本文讲早期数据省的是什么、风险落在哪一类请求上、幂等与非幂等为什么要分开对待,以及以 Go 语言为技术栈的服务在这一层要做什么取舍。

2026-10-12

内容没变时服务器只回一个状态码,条件请求靠哪个标识判断

缓存过期不代表要重新下载整份内容。ETag 是某一版资源的标识,资源内容变了就必须生成新值;客户端回访时用 If-None-Match 把旧值带回,服务端比对一致就只回一个不带正文的状态码。本文讲这个标识代表什么、强校验与弱校验的差别、弱标识为什么会影响分段请求,以及内容频繁改动的站点怎么用它减少重复传输。

2026-10-12

浏览器会标出请求来自本站还是外站,服务端怎么据此挡住跨站请求

浏览器会给请求加上标明来源关系的几个 Sec-Fetch 请求头,前端脚本改不了它们。取值区分同源、同站、跨站与无发起方,服务端按这些关系决定放行还是拒绝,就能对跨站请求伪造做出一道与写操作确认互补的防线;这组头只在可信地址的请求里发送。本文讲四个取值的含义、按上下文放行的写法,以及它与回合级操作审批各自管什么。

2026-10-12

用户退出登录后浏览器里还留着旧数据,响应头怎么要求清除

退出登录时浏览器里留着的缓存和本地存储不会自动消失。Clear-Site-Data 响应头是给客户端的清除信号,可按项清缓存、凭据、存储与执行上下文,且只在加密连接里生效:凭据清到整个注册域,存储只清当前来源。站内登录态由 JWT 承载,客户端这一层本地数据要靠它配合收尾,公共设备上尤其值得加。

2026-10-12

服务器默认把程序版本写进响应头和错误页,要不要收掉这层指纹

多数 Web 服务器默认把程序版本写进 Server 响应头和错误页,Nginx 的 server_tokens 指令默认就是 on,关到 off 之后两处都不再带版本信息。收掉这层指纹能减少按版本撞库的便利,但它只是减少信息暴露,不构成防线。本文讲版本号从哪两处漏出去、关掉后还剩什么,以及宝塔、Docker 等不同部署方式各要在哪一层改。

2026-10-12

调整页面排版会不会更容易被生成式引擎引用,实验给出两个百分比

有一项生成式引擎优化研究把内容结构拆成文档架构、信息分块与视觉强调三层,在六个主流生成式引擎上做实验,报告被引用率提升 17.3%、主观质量提升 18.5%,且不改主题内容。本文解释这两个百分比各自指什么、结构提升为什么不等于内容质量提升,以及它和站内自动生成 llms.txt 这类站点说明的分工。

2026-10-12

给大模型的站点说明文件是给人读的还是给智能体用的,提案改过说法

这类站点说明文件按提案的现行说法是帮智能体使用网站,早期表述才是帮语言模型读懂网页,服务对象从模型扩展到智能体。文件是纯文本清单,规范要求里只有一项必填:带项目或站点名称的一级标题,其余摘要段、说明段和按二级标题分组的文件清单都是可选。AnQiCMS 支持自动生成站点 llms.txt,并与站点地图分工不同。

2026-10-12

Robots 文件本身读不到的时候,抓取方按什么规则继续

排除协议原文把读取失败分成两种相反结果:响应状态码落在五百段到五百九十九这段服务端错误时,抓取方必须视为全部禁止;落在四百段到四百九十九这段客户端错误时,抓取方可以访问服务器上任意资源。协议还写明这些规则不是访问授权,也不能替代内容安全措施,站内的后台与用户组权限才是真正的一道门。

2026-10-12