Javascript &引用;错误:禁止交叉原点为空”;JSDOM试图获取json文件
我试图在node.js环境中,使用unblockvideos.com提供的API作为json文件,通过ID获取youtube视频的阻止国家。我使用相同的语法通过youtube API v3获取youtube视频元数据,这很好,所以我不知道为什么会出现错误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('')
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来获取文件,从而解决了这个问题。感谢您的支持:)