我已经阅读了两个小时的反向代理文档来添加CORS标头,我无法使用。您能否帮助一个简单的例子如何使用它。
我在javascript中试过这个例子
(function() {
var cors_api_host = 'cors-anywhere.herokuapp.com';
var cors_api_url = 'https://' + cors_api_host + '/';
var slice = [].slice;
var origin = window.location.protocol + '//' + window.location.host;
var open = XMLHttpRequest.prototype.open;
XMLHttpRequest.prototype.open = function() {
var args = slice.call(arguments);
var targetOrigin = /^https?:\/\/([^\/]+)/i.exec(args[1]);
if (targetOrigin && targetOrigin[0].toLowerCase() !== origin &&
targetOrigin[1] !== cors_api_host) {
args[1] = cors_api_url + args[1];
}
return open.apply(this, args);
};
})();
我真的不明白我是否需要node.js或究竟是什么
答案 0 :(得分:18)
CORS Anywhere有助于访问来自其他网站的数据,这些数据通常是由网络浏览器的原始政策禁止的。这是通过服务器代理对这些站点的请求来完成的(在本例中用Node.js编写)。
"To use the API, just prefix the URL with the API URL."。这真是全部。因此,您需要http://example.com
,而不是请求https://cors-anywhere.herokuapp.com/http://example.com
。然后,CORS Anywhere将代表您的应用程序发出请求,并将CORS标头添加到响应中,以便您的Web应用程序可以处理响应。
如果需要,问题的摘要会自动修改XMLHttpRequest
生成的请求的网址。此片段不是必需的,您可以自己添加CORS Anywhere API URL,就像完成in the demo page一样。
Github上的存储库(https://github.com/Rob--W/cors-anywhere)包含为CORS Anywhere提供支持的服务器的源代码。如果您是前端开发人员,那么您需要知道的全部内容。如果您的应用程序有很多用户,那么您应该自己托管CORS Anywhere,以避免占用公共CORS Anywhere服务器上的所有资源。
答案 1 :(得分:11)
我顺从罗布,但这是我尝试回答你的问题。
(Rob,请随时更正此答案;感谢CORS Anywhere。它最近给我带来了一大堆麻烦。)
例如,在命令提示符下,输入:
npm install cors-anywhere
(此示例命令在node_modules\cors-anywhere
的当前目录下安装CORS Anywhere。)
在任何地方运行CORS。
例如,在命令提示符下,输入:
node cors-anywhere.js
CORS Anywhere会回复如下消息:
Running CORS Anywhere on 127.0.0.1:8080
(IP地址127.0.0.1
是localhost
;您的计算机。)
您可以在环境变量中指定端口,但我选择在cors-anywhere.js
的本地副本中编辑值。
现在,假设您要在以下URL中使用不支持CORS的Web服务:
http://remote.server.com:8085/service
您可以使用CORS Anywhere域和端口,然后使用原始URL作为路径组件,而不是使用该原始URL:
http://localhost:8080/remote.server.com:8085/service
(您可以省略原始网址中的前导http://
。)
答案 2 :(得分:0)
您还可以查看以下内容:https://github.com/Zibri/cloudflare-cors-anywhere
您可以在3分钟内将代码上传到免费的cloudflare工作者中!