Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/379.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/86.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript &引用;错误:禁止交叉原点为空”;JSDOM试图获取json文件_Javascript_Jquery_Node.js_Api_Jsdom - Fatal编程技术网

Javascript &引用;错误:禁止交叉原点为空”;JSDOM试图获取json文件

Javascript &引用;错误:禁止交叉原点为空”;JSDOM试图获取json文件,javascript,jquery,node.js,api,jsdom,Javascript,Jquery,Node.js,Api,Jsdom,我试图在node.js环境中,使用unblockvideos.com提供的API作为json文件,通过ID获取youtube视频的阻止国家。我使用相同的语法通过youtube API v3获取youtube视频元数据,这很好,所以我不知道为什么会出现错误 var jsdom = require("jsdom"); const { JSDOM } = jsdom; const { window } = new JSDOM(); const { document } = (new JSDOM('')

我试图在node.js环境中,使用unblockvideos.com提供的API作为json文件,通过ID获取youtube视频的阻止国家。我使用相同的语法通过youtube API v3获取youtube视频元数据,这很好,所以我不知道为什么会出现错误

var jsdom = require("jsdom");
const { JSDOM } = jsdom;
const { window } = new JSDOM();
const { document } = (new JSDOM('')).window;
global.document = document;
var $ = jQuery = require('jquery')(window);


$.get('https://api.unblockvideos.com/youtube_restrictions?id=vMHZdfRWF94', function(ubjson) {

  //code

});
以下是我的控制台输出:

错误:禁止交叉原点为空 在dispatchError(/home/nodeworkspace/node_modules/jsdom/lib/jsdom/living/xhr-utils.js:60:19) 在Object.validCORSHeaders(/home/nodeworkspace/node_modules/jsdom/lib/jsdom/living/xhr-utils.js:72:5) 接收方响应(/home/nodeworkspace/node_modules/jsdom/lib/jsdom/living/xmlhttprequest.js:845:21) at Request.client.on.res(/home/nodeworkspace/node_modules/jsdom/lib/jsdom/living/xmlhttprequest.js:677:38) 在emitOne(events.js:116:13) at Request.emit(events.js:211:7) at Request.onRequestResponse(/home/nodeworkspace/node_modules/jsdom/node_modules/Request/Request.js:1066:10) 在emitOne(events.js:116:13) 在ClientRequest.emit(events.js:211:7)
在HTTPParser.parserOnIncomingClient[as onIncoming](_http_client.js:544:21)未定义的

您遇到了CORS问题:

很可能,API拒绝向您的浏览器提供内容,因为unblockvideos.com不接受您浏览器的“域”


你必须联系unblockvideos.com,让他们将你的域名列入白名单

嘿,谢谢你的回答。这很有趣,因为它在我的Chrome浏览器上工作,在同一台机器上使用wget也能工作,所以我知道问题是脚本的模拟浏览器向API报告的“域”与另一个不同?我希望wget不会失败,但我希望Chrome会抛出CORS错误,除非域被接受。由于它在JSDOM中失败(如堆栈跟踪中所述),因此我怀疑问题可能是源代码为“null”。这可能是JSDOM本身的问题。。。我找到了这个列表:对不起,我无法深入研究他们的测试来确定它是否适合您的用例。但是您可以尝试确保您的JSDOM是最新版本的,并查看是否仍然出现错误。。。很好,更新JSDOM对我没有任何帮助,但我通过使用https.get来获取文件,从而解决了这个问题。感谢您的支持:)