javascript - 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) 未定义
解决方案
您遇到了 CORS 问题:https ://developer.mozilla.org/en-US/docs/Web/HTTP/CORS
很可能,API 拒绝向您的浏览器提供内容,因为 unblockvideos.com 不接受您浏览器的“域”。
您必须联系 unblockvideos.com 让他们将您的域列入白名单。
推荐阅读
- java - 运行 testng.xml 文件显示 Invoked Methods 错误
- laravel - [Route:tender_detail] Locale Laravel 缺少必需的参数
- c# - 如果 String 是一个类,那么为什么使用 new 关键字的字符串(System.String)不需要创建对象?
- excel - Excel 工作表中的数据已更新,但未从下拉列表中检索到名称
- wso2 - 登录 /store 后 WSO2 api 管理器失败(405 - 方法不允许)
- entity-framework-core - 如何使用新的 EF 6.4 搭建 dbcontext?
- date - PySpark date_trunc 修改时区:如何防止?
- blazor - 使用 Blazor 应用程序随机出现“错误:电路无法初始化”
- python - 检查文件是否存在时防止“GUI 冻结”
- swagger - react-admin 中的 OpenAPI 支持?