首页 > 解决方案 > JSDOM 尝试获取 json 文件时出现“错误:禁止跨域 null”

问题描述

我正在尝试在 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) 在receiveResponse (/home/nodeworkspace/node_modules/jsdom/lib/jsdom/living/xmlhttprequest.js:845:21) 在Request.client.on.res (/ home/nodeworkspace/node_modules/jsdom/lib/jsdom/living/xmlhttprequest.js:677:38) 在emitOne (events.js:116:13) 在Request.emit (events.js:211:7) 在Request.onRequestResponse (/home/nodeworkspace/node_modules/jsdom/node_modules/request/request.js:1066:10) 在 HTTPParser.parserOnIncomingClient 在 ClientRequest.emit (events.js:211:7) 在 emitOne (events.js:116:13) [作为 onIncoming] (_http_client.js:544:21) 未定义

标签: javascriptjquerynode.jsapijsdom

解决方案


您遇到了 CORS 问题:https ://developer.mozilla.org/en-US/docs/Web/HTTP/CORS

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

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


推荐阅读