gpt4 book ai didi

asp.net-core - CORS 策略会阻止来自非浏览器请求的资源访问吗?

转载 作者:行者123 更新时间:2023-12-04 13:46:28 39 4
gpt4 key购买 nike

据我了解,使用 CORS 模块将删除 Access-Control-Allow-Origin来自资源的 header ,导致浏览器的 XmlHttp 请求失败。

但是,这是否会阻止来自 CURL 或其他 native 应用程序/Web 服务器(即通过 PHP 编写和运行的请求)的 Http 请求成功地从该资源中检索数据?

最佳答案

However, does this prevent Http requests from a CURL, or other native applications/web-servers (ie. a request written and run via PHP) from successfully retrieving data from that resource?


不,CORS 配置不会阻止非浏览器内容成功检索您的资源。
同源策略仅由浏览器强制执行。它不是由服务器强制执行的。 (并且 CORS 是一种放宽同源策略的方法。)如果请求中缺少任何 CORS 详细信息,服务器不会以某种方式阻止请求或拒绝发送响应。
相反,当您在服务器上配置 CORS 支持时,服务器所做的所有不同只是发送 Access-Control-Allow-Origin header 和其他 CORS 响应 header 。
该协议(protocol)的工作方式是,无论您在服务器端进行何种 CORS 配置,所有客户端(甚至浏览器)都会像往常一样继续从服务器获取响应。但不同的是, curl或其他原生应用程序或后端服务器端编程环境(如 PHP)不会阻止您的客户端代码访问响应,如果它不包含 Access-Control-Allow-Origin响应头。但是浏览器会。
具体来说,即使您在浏览器开发工具中看到来自前端 JavaScript 代码的跨域请求失败的错误,您仍然可以在浏览器开发工具中看到响应。
但仅仅因为您的浏览器可以看到响应并不意味着浏览器会将其暴露给您的前端 JavaScript 代码。如果请求进入的服务器选择允许该请求,浏览器只会将来自跨域请求的响应暴露给在特定源运行的前端代码,通过响应 Access-Control-Allow-Origin允许该来源的 header 。
但是浏览器是唯一这样做的客户端。浏览器是唯一实现同源策略和 CORS 协议(protocol)的客户端。 curl或其他 native 应用程序或 HTTP 客户端请求在服务器端运行时(如 PHP)不实现 CORS 协议(protocol),因此您无法通过在服务器端进行任何 CORS 配置来阻止来自它们的请求。
因此,如果您想阻止来自非浏览器客户端的资源请求,则需要使用 CORS 配置以外的其他方式来执行此操作。

关于asp.net-core - CORS 策略会阻止来自非浏览器请求的资源访问吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43432743/

39 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com