从词源角度拆开看,header('Access-Control-Allow-Origin: *'); 这句话几乎就是一堆古英语、拉丁语、古法语词根拼出来的 Web 协议术语。
先看整句代码的含义:
这是 PHP 的 header() 函数,向 HTTP 响应中发送一个响应头:
Access-Control-Allow-Origin: *
意思是:告诉浏览器,这个资源的跨源访问控制策略是“允许所有来源访问”。
下面逐词看词源。
1. header
古英语:
hēafod,意思是“头”。原始日耳曼语:
*haubudam。与拉丁语
caput“头”同源。后来引申为“位于主体前面的部分”。
在 HTTP 里,header 就是“消息头”,是附加在请求或响应主体之前的信息。
PHP 的 header() 函数名也来自这里:发送一个 HTTP 头。
2. Access
拉丁语:
accessus。由
ad-“向、朝” +cedere“走、让”构成。本义:走近、进入。
后来引申为:进入的权利、访问。
所以 Access 在这里就是“访问”。
3. Control
古法语:
contreroller。中世纪拉丁语:
contrarotulare。由
contra-“相对、对照” +rotulus“小卷轴、名单”构成。原义:用副本账册去核对,后来引申为“控制、管理”。
Access-Control 合起来就是“访问控制”,也就是:谁可以访问、谁不可以访问。
4. Allow
古法语:
alouer。拉丁语:
allaudare。由
ad-“向” +laudare“赞扬”构成。最初有“称赞、认可”的意思。
后来从“认可”引申为“批准、允许”。
所以 Allow 在这里就是“允许”。
5. Origin
拉丁语:
originem,主格origo。来自动词
oriri,意思是“升起、开始”。本义:开始之处、来源、起源。
在 Web 里,Origin 不是随便一个来源,而是特指:
协议 + 域名 + 端口
比如:
https://example.com:443
这就是一个“源”。
6. *
英文:
asterisk。希腊语:
asteriskos。由
aster“星星” + 小词后缀-iskos构成。字面意思是“小星星”。
在计算机和规范里,星号常被用作通配符,表示“任意、所有”。
在这里,* 就表示:允许任意 Origin。
7. 组合起来
Access-Control-Allow-Origin 字面拆解是:
访问 - 控制 - 允许 - 来源
也就是:
在访问控制中,允许哪个来源。
再加上 *:
允许所有来源
所以整句:
header('Access-Control-Allow-Origin: *');从词源和命名逻辑看,就是:
发送一个 HTTP 响应头,告诉浏览器:这个资源的访问控制策略允许任意来源访问。
它属于 CORS 机制。
CORS 全称是:
Cross-Origin Resource Sharing 跨源资源共享
其中:
Cross:交叉、跨越;Origin:源;Resource:资源;Sharing:共享。
浏览器默认有同源策略,不允许随便跨源读取数据。
服务器通过 Access-Control-Allow-Origin 这个响应头,来授权哪些源可以跨源访问。
用一句话概括词源逻辑:
header是“头”,Access是“进入”,Control是“控制”,Allow是“认可后允许”,Origin是“来源”,*是“小星星变成的任意通配符”。合起来就是:访问控制允许来源:任意