就CORS而言,通过XMLHttpRequest、curl和浏览器URL获取请求的区别是什么?

What is the difference between get requests via XMLHttpRequest, curl, and browser URL in terms of CORS?

本文关键字:请求 获取 URL 区别 是什么 浏览器 而言 CORS 通过 XMLHttpRequest curl      更新时间:2023-09-26

我正试图通过阅读https://developer.mozilla.org/en-US/docs/Web/HTTP/Access_control_CORS来了解CORS(跨源资源共享)。在这里,我注意到文档声明:

由于众所周知的安全原因,从脚本中发起的跨站点HTTP请求受到众所周知的限制。例如,使用XMLHttpRequest对象发出的HTTP请求服从同源策略。

这对我来说是有意义的,因为我以前遇到过以下错误:

XMLHttpRequest无法加载http://localhost:7000。没有"访问-控制-允许-起源"标头出现在请求上资源。因此原产地http://localhost:9000是不允许的访问。

然而,为什么curl http://localhost:7000返回位于页面上正确的JSON ?仅仅是因为curl命令不是来自脚本吗?另外,浏览器如何识别来自脚本的请求?如果这在不同的浏览器之间有明显的区别,我很想知道Chrome和Firefox是如何检测到这一点的。

在我看来XMLHttpRequest是javascript调用服务器获取数据和重载页面。首先没有页面加载,没有XMLHttpRequest。

Curl是php服务器函数,从服务器获取数据并返回到php代码,Curl是服务器代码的一部分。