如何检查用户是否可以使用Javascript访问YouTube

如何检查用户是否可以使用Javascript访问YouTube,javascript,youtube,cors,Javascript,Youtube,Cors,我需要通过编程检查用户是否可以访问YouTube,因为YouTube在世界上的某些地方被阻止。我需要能够在JavaScript中实现这一点 我所尝试的: 1) 动态创建图像并将源设置为YouTube域上的已知图像-我在这里遇到了CORS问题 2) 使用XMLHttpRequest创建简单的GET请求(同样的问题) 3) 看看YouTube API。。它似乎没有公开一个可以告诉我GET请求是否成功的方法。。当然,所有的呼叫都是通过它来路由的,严格地说,这与请求 这里有什么明显的我遗漏的吗?如果您有

我需要通过编程检查用户是否可以访问YouTube,因为YouTube在世界上的某些地方被阻止。我需要能够在JavaScript中实现这一点

我所尝试的: 1) 动态创建图像并将源设置为YouTube域上的已知图像-我在这里遇到了CORS问题 2) 使用XMLHttpRequest创建简单的GET请求(同样的问题) 3) 看看YouTube API。。它似乎没有公开一个可以告诉我GET请求是否成功的方法。。当然,所有的呼叫都是通过它来路由的,严格地说,这与请求

这里有什么明显的我遗漏的吗?如果您有任何见解,我将不胜感激


谢谢

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

您可能需要重新启动计算机才能使其生效。

可能是oEmbed回调?这是有可能的-谢谢。我恐怕我没有拿到CORS的头球。我以为这是因为YouTube没有启用CORS?如果我从站点发送了一个空白GET请求,我会得到一个XHR状态0,我认为这意味着站点没有启用CORS。如果我错了,请随时纠正我,这是我发展中的一个新领域。嗯,我的意思是更多的“如果你遇到CORS”问题,这意味着你实际上正在访问Youtube的服务器,因此你的请求“成功”。谢谢你的帮助。你提供的代码确实在Chrome中运行得很好,但IE11让我有些难过,因为它不支持Fetch,也不支持承诺。我需要单独解决这个问题,但这是朝着正确方向迈出的一步。谢谢