我需要以编程方式检查用户是否可以访问YouTube,因为YouTube在世界某些地方被禁止。我需要能够使用JavaScript做到这一点。
我尝试过的方法: 1)动态创建图像并将源设置为YouTube域上的已知图像-我在这里遇到了CORS问题 2)使用XMLHttpRequest创建一个简单的GET请求(同样的问题) 3)看一下YouTube API ..似乎没有公开可以告诉我GET请求是否成功的方法。.当然,所有调用都是通过https://www.googleapis.com/youtube/v3路由的,严格来说,这不是与对http://www.youtube.com
的请求完全相同这里有明显的我想念的东西吗?将不胜感激。
谢谢!
答案 0 :(得分:2)
CORS是服务器端标头。如果您收到CORS标头,那么您将访问正在响应标头响应的Youtube服务器,这可能意味着youtube没有被“阻止”。
所以这样的事情应该可以正常工作:
async function canAccessYoutube() {
try {
const request = await fetch(
"https://www.youtube.com/",
{
mode: "no-cors"
}
);
return true;
} catch {
return false;
}
}
假设阻止是基于DNS的,则可以通过在自己的计算机上阻止Youtube来测试功能。如果您使用的是Mac或Linux计算机,请将以下内容添加到您的/etc/hosts
文件中:
0.0.0.0 youtube.com
0.0.0.0 www.youtube.com
::0 www.youtube.com
::0 youtube.com
您可能需要重新启动计算机才能使其生效。