没有响应头 Access-Control-Allow-Origin 时允许 CORS
Posted
技术标签:
【中文标题】没有响应头 Access-Control-Allow-Origin 时允许 CORS【英文标题】:CORS allowed when no response header Access-Control-Allow-Origin 【发布时间】:2019-04-12 22:46:45 【问题描述】:即使响应标头不包含“Access-Control-Allow-Origin”,我也可以将 post/put/delete 发送到我的本地主机,我使用的是 chrome,所以我的问题:
1- 如果没有返回“Access-Control-Allow-Origin”,是否允许来自不同站点的请求?
2-为什么请求在我的本地主机上有效,浏览器在请求中发送了以下标头:
来源:http://localhost:8080
或者浏览器在同源时忽略响应头“Access-Control-Allow-Origin”?
【问题讨论】:
【参考方案1】:如果没有返回“Access-Control-Allow-Origin”,是否允许来自不同站点的请求?
其他条件相同的 POST 请求将被允许,但同源策略将阻止 JS 读取响应。
PUT 和 DELETE 请求需要 Preflight 请求才能首先从 CORS 获得许可,因此这些请求将被阻止。
为什么请求在我的本地主机上有效
当请求来自同一个来源时,同源策略不会阻止访问。
【讨论】:
所以即使浏览器发送了 Origin 标头,也永远不需要在同一来源上使用“Access-Control-Allow-Origin”吗?以上是关于没有响应头 Access-Control-Allow-Origin 时允许 CORS的主要内容,如果未能解决你的问题,请参考以下文章