CORS与crossdomain.xml优先级问题及跨域请求规则咨询
嘿,这个问题问得特别精准,刚好戳中了Flash跨域策略和CORS这两个机制的核心区别,我来给你一步步拆解清楚:
核心问题解答
1. site222.com发起跨域请求时,遵循哪项配置?
这得看请求是谁发起的:
- 如果是浏览器里的JavaScript(比如用
fetch或XMLHttpRequest)发起的请求:浏览器会严格遵循CORS配置,因为Access-Control-Allow-Origin只设了site111.org,所以site222.com的请求会被浏览器拦截,拿不到响应。 - 如果是Flash程序发起的请求:Flash Player只会读取目标服务器的
crossdomain.xml配置,只要这个文件允许跨域,那site222.com的Flash请求就能正常拿到响应,完全不管CORS的响应头。
2. CORS和crossdomain.xml的适用范围
- crossdomain.xml:正如你所说,它是Flash Player专属的跨域策略文件,只有Flash程序发起的跨域HTTP请求才会受它约束,其他客户端(比如浏览器JS、后端服务、Postman工具)根本不会去读取这个文件。
- CORS:它是浏览器为JavaScript定制的跨域安全规则,仅适用于浏览器环境下JS发起的请求(包括
fetch、XMLHttpRequest、ES6模块加载等场景)。非浏览器环境的请求(比如后端接口调用、桌面APP请求)不受CORS限制。
3. 二者的优先级高低?
其实不存在“谁优先级更高”的说法——因为它们管的是完全不同的请求类型,相当于两个平行的规则:
- Flash发起的请求:只认
crossdomain.xml,CORS响应头对它来说等于不存在; - JS发起的请求:只认CORS响应头,
crossdomain.xml的内容它完全不关心。
内容的提问来源于stack exchange,提问作者Reda LM
相关产品推荐
相关产品推荐

