CORS 文本条件解释
本地处理任务练习:分别核对预检和实际响应
使用合成JSON材料,只做本地文本推演,不输入账号、令牌或真实Cookie。
{
"origin": "https://app.example",
"method": "POST",
"credentials": "omit",
"requestHeaders": [
"X-Demo"
],
"preflight": {
"status": 204,
"headers": "Access-Control-Allow-Origin: https://app.example\nAccess-Control-Allow-Methods: POST\nAccess-Control-Allow-Headers: X-Demo"
},
"response": {
"status": 200,
"headers": "Access-Control-Allow-Origin: https://app.example\nAccess-Control-Expose-Headers: X-Demo-Result\nX-Demo-Result: synthetic"
},
"readHeaders": [
"X-Demo-Result"
]
}预期观察:预检与实际响应的所填条件满足支持子集,x-demo-result按输入可见;仍需在目标浏览器取实际证据。
JSON不完整时保留原文,按输入契约修正;省略实际响应时结果为未知,不能用预检成功代替实际响应。
完成条件:能分别记录OPTIONS和实际响应及头可见性;条件推演不代表接口授权、真实请求或业务通过。
保存CORS条件与未知项填写字段与支持范围
origin:浏览器序列化的HTTP(S)来源,包含协议、主机及非默认端口,不含路径或末尾斜杠。method:GET、HEAD、POST、PUT、PATCH、DELETE、OPTIONS大写方法。credentials:omit或include。
requestHeaders:全部作者设置的头名称数组;没有则填[],只填名称、不填值。Accept、Accept-Language、Content-Language、Content-Type、Range只有名称时缺头值/MIME,预检需要保持未知。Cookie/Host/Sec-*等浏览器管理头不作为作者可设置条件。
preflight和response分别填写预检、实际响应对象:status为状态数字,headers为逐行响应头文本,用JSON的\n表示换行。重复行原样保留。省略整段或字段会保留未知;不要用OPTIONS响应代替实际响应。
readHeaders是想在脚本中读取的响应头名称数组,可省略。结果只说明所填头的可见性,省略头值;Set-Cookie不会向脚本暴露。Authorization仅需名称,通配许可存在标准/浏览器差异,需明确允许后复验。
只解释所填文本,不访问输入来源、不提供网站总通过。opaque/null来源、重定向链、预检缓存、服务工作线程、私有网络策略、真实Cookie、CSRF与业务授权需另取证据。值省略不等于输入已匿名,复制或下载前请自行核对。
按浏览器证据继续排查