jquery 如何获取< head>远程网站的内容(我没有修改该网站的权限)

wgx48brx  于 2023-03-07  发布在  jQuery
关注(0)|答案(1)|浏览(131)

比如说,我想获取youtube或其他远程网站的标签,但现在,我收到一个错误消息: tag of youtube or another remote website. Currently, I get an error that states:
CORS策略已阻止从源"我的网站"访问"网站I请求获取标题部分"处的XMLHttpRequest:请求的资源上不存在"Access-Control-Allow-Origin"标头。
我尝试过做一个XMLHttpRequest,但是我被源代码阻止了。在这种情况下,我没有尝试注入或修改一些东西,而是获得了head部分,你可以很容易地通过从源代码复制粘贴来获得它(所以我没有看到安全问题)。
这是我用来实现这一点的函数:

function httpGet(theUrl) {
    if (window.XMLHttpRequest) {// code for IE7+, Firefox, Chrome, Opera, Safari
        xmlhttp = new XMLHttpRequest();
    }
    else {// code for IE6, IE5
        xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
    }
    xmlhttp.onreadystatechange = function () {
        if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
            console.log(xmlhttp.responseText);
            return xmlhttp.responseText;
        }
    }
    xmlhttp.open("GET", theUrl, false);
    xmlhttp.send();
}

是否有一种方法可以向远程站点发送请求并获得头部内容(只读)?目前,这里有类似的问题,但没有一个回答,因为不同的开发人员使用不同的东西,我很难理解这是否是一种可能性。
更新:这里是manifest.json文件,但是我想再次说明用户没有在标签页或其他任何地方打开该域,它只是一个随机域。

{
  "manifest_version": 3,
  "version": "0.0.5",
  "action": {
    "default_popup": "popup/popup.html"
  },
  "permissions": ["activeTab", "scripting"],
  "host_permissions": ["<all_urls>"]
}
os8fio9y

os8fio9y1#

我测试了你的扩展,它工作得很好。manifest.json略有修改,但基本上是一样的。

manifest.json

{
  "name": "hoge",
  "manifest_version": 3,
  "version": "0.0.5",
  "action": {
    "default_popup": "popup.html"
  },
  "host_permissions": [
    "<all_urls>"
  ]
}

popup.html

<html>
<body>
  <script src="popup.js"></script>
</body>
</html>

popup.js

function httpGet(theUrl) {
  if (window.XMLHttpRequest) {// code for IE7+, Firefox, Chrome, Opera, Safari
      xmlhttp = new XMLHttpRequest();
  }
  else {// code for IE6, IE5
      xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
  }
  xmlhttp.onreadystatechange = function () {
      if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
          console.log(xmlhttp.responseText);
          return xmlhttp.responseText;
      }
  }
  xmlhttp.open("GET", theUrl, false);
  xmlhttp.send();
}

const url = "https://stackoverflow.com/";
httpGet(url);

相关问题