跨源写入/读取是什么?为何链接与重定向被归为写入操作?
跨源写入的定义疑问解答
MDN将跨源访问分为三类:
- 跨源写入通常是被允许的,例如链接、重定向和表单提交。部分HTTP请求需要预检。
- 跨源嵌入通常是被允许的(下方列出示例)。
- 跨源读取通常是被禁止的,但嵌入操作常会泄露读取权限,例如可读取嵌入图片的尺寸、嵌入脚本的行为或嵌入资源的可用性。
关于“链接和重定向为啥被归为‘写入’操作”,核心是MDN从服务器端状态变更的角度来定义这类操作的:
- 链接点击:用户点跨源链接时,浏览器会给目标服务器发GET请求,这个请求可能触发服务器更新状态——比如记访问日志、统计点击量,要是链接带特定参数,甚至会修改用户关联的资源状态(比如标记某条内容已读)。
- 重定向:不管是服务器返回3xx状态码触发的跳转,还是前端用
location.href发起的重定向,本质都是给目标服务器发请求,同样可能让服务器变更状态,比如更新会话信息、记录跳转轨迹之类的。
这里的“写入”不是说改客户端本地内容,而是指请求可能对目标服务器的状态产生变更影响,和单纯读取资源内容的操作(比如直接拿JSON数据)划清界限。这类操作风险通常不高,所以默认被允许,不像跨源读取那样管得严。
内容的提问来源于stack exchange,提问作者Edward Elric
相关产品推荐
相关产品推荐

