是否可将access-control-allow-origin设置为“none”以阻止站点被跨域调用嵌入?
防跨站调用与嵌入的响应头配置说明
关于Access-Control-Allow-Origin的配置疑问解答
- 不能将该头设置为
none:HTTP CORS标准中不存在none这个合法取值,浏览器会识别为无效配置,最终效果和完全不返回该头一致,无法实现预期的拦截效果。 - 不建议设置为
null:虽然null是标准允许的取值,但很多跨域场景的请求Origin默认就是null(比如本地打开的静态HTML、沙箱环境的iframe请求、跨域重定向后的请求等),设置为null反而会给这些场景放行,违背拦截跨站请求的初衷。 - 移除
Access-Control-Allow-Origin头是正确的跨域拦截方案:浏览器针对跨域请求抛出的CORS报错是返回给发起请求的第三方站点前端的,仅用于提示第三方开发者无调用权限,对你自身站点的正常访问、自身站点内的接口调用完全没有影响,不需要也无法规避这个报错——该报错本身就是安全策略生效的正常表现。
额外补充:阻止站点被其他网站嵌入的配置
CORS机制仅管控跨域JS接口调用,无法拦截iframe嵌入行为,若需要禁止站点被嵌入,可额外配置X-Frame-Options响应头:
- 设为
DENY:禁止所有站点嵌入你的页面 - 设为
SAMEORIGIN:仅允许你的同域名站点嵌入页面
内容的提问来源于stack exchange,提问作者pierr0t
相关产品推荐
相关产品推荐

