比方说,我想获取 youtube 或其他远程网站的 标签。目前,我收到一条错误消息:
从来源“我的网站”访问“WebSite I request to get the head section”的 XMLHttpRequest 已被 CORS 策略阻止:请求的资源上不存在“Access-Control-Allow-Origin”标头。
我曾尝试执行 XMLHttpRequest,但我被来源阻止了。在这种情况下,我不是要注入或修改某些东西,而是要获取头部部分,您可以通过从源代码中复制粘贴轻松获得头部部分(因此我看不到那里的安全问题)。
这是我用来实现这一目标的功能:
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>"]
}
我测试了你的扩展,它工作正常。 manifest.json 略有修改但基本相同。
清单.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/";
const ret = httpGet(url);
console.log(ret);