使用Javascript但不使用Python / PHP的CORS错误

我正在编写一个小脚本来访问外部API以进行工作。 我最初用Python做过这一切,一切正常。

然后我被要求尝试在Javascript中执行此操作。 现在,我真的不是程序员,但我知道(或者相信)Javascript主要用于客户端,而PHP或Python实际上是用于服务器端操作。 当我用Python编写脚本时,我没有遇到任何问题,但在Javascript中我得到了一个

Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource. 

错误。 从我在这里读到的CORS和Stack上的类似问题来看,这是有道理的,但我真的不明白为什么我在Python或PHP中没有得到类似的错误……

我对此很新,所以我可能错过了很多东西,但我真的很感激任何人都能给我的见解。 如果我遗漏了任何重要信息,请告诉我。

来自Mozilla的文档 :

出于安全原因,浏览器会限制从脚本中发起的跨源HTTP请求。 例如,XMLHttpRequest和Fetch遵循同源策略。 因此,使用XMLHttpRequest或Fetch的Web应用程序只能向其自己的域发出HTTP请求。

由于浏览器中的Javascript使用XMLHttpRequestfetch来发出HTTP请求,因此它们受CORS策略实施的约束。

有关CORS原因的更多信息:

CORS旨在允许资源主机(通过HTTP提供其数据的任何服务)限制哪些网站可以访问该数据。

示例:您正在托管显示流量数据的网站,并且您正在使用网站上的AJAX请求。 如果没有SOP和CORS,任何其他网站都可以通过简单的AJAXing到您的终端来显示您的流量数据; 任何人都可以轻松“窃取”您的数据,从而“窃取”您的用户和您的资金。

您正在使用的外部API可能会故意实施CORS策略。 例如,如果API需要应用程序级密钥进行身份validation,则CORS策略将阻止在公共环境(即浏览器)中使用该密钥。 或者,API可能包含CORS可接受域名列表,但不包括您当前使用的域。

这只是几个例子; API可能有多种原因来实现CORS头。