gpt4 book ai didi

javascript - 如何从 content_script 向外部站点发出请求

转载 作者:行者123 更新时间:2023-11-28 02:31:56 24 4
gpt4 key购买 nike

我正在尝试制作一个 Chrome 扩展程序,它将在我的 Gmail 中显示一个弹出窗口,其中包含来 self 的外部服务器的一些信息,例如今天的天气。

我尝试过的

  1. 我尝试将 js 包含在 chrome 扩展中,但随后尝试对我的服务器进行 AJAX 调用违反了同源策略。所以这个选项不起作用。
  2. 然后我尝试将 js 文件保留在服务器上并在页面加载时加载它。

我的manifest.json看起来像这样:

{
"name": "cvnosnvsdionfois",
"version": "0.1.0",
"manifest_version": 2,
"description": "sldnfksdngsdngods",
"browser_action": {
"default_icon": "images/icon.png"
},
"permissions": [
"http://api.flickr.com/", "webRequest",
"tabs",
"http://*localhost:8080*"
],
"content_scripts": [
{
"matches": ["https://mail.google.com/*"],
"js": ["http://localhost:8080/static/response.js"]
}
]
}

我在其他地方读到内容脚本不能包含在外部 URL 中,所以我认为这不起作用。这里什么是正确的方法。我怎样才能有一些在 Gmail 中运行的 javascript 代码,可以从我的服务器请求信息?例如, Smartr 是如何实现的?做吗?

最佳答案

我不知道为什么 Cross-Origin XMLHttpRequest不起作用,因为扩展并不像可以使用 XMLHttpRequest 的常规网页那样受到限制。对象从远程服务器发送和接收数据,并受到 same origin policy 的限制。扩展程序可以与其源之外的远程服务器通信,只要它首先请求跨源权限。

引用文献:

演示

此示例代码使用后台页面为另一个域制作 XHR。

manifest.json

我确保 list 具有所有可用权限,并且还注册了一个后台页面。

{
"name": "Demo",
"description": "Sample Message Communication",
"version": "1",
"permissions": [
"<all_urls>"
],
"background": {
"scripts": ["background.js"]
},

"manifest_version": 2
}

背景.js

此示例代码请求一些随机的 ASP 页面

function makeXHR() {

var xhr = new XMLHttpRequest();
xhr.onreadystatechange = function (data) {
if (xhr.readyState == 4) {
if (xhr.status == 200) {
console.log("Response is received");
}
} else {
//callback(null);
}
}

var url = 'http://www.w3schools.com/html/default.asp';
xhr.open('GET', url, true);
xhr.send();

}
document.addEventListener("DOMContentLoaded", makeXHR);

关于javascript - 如何从 content_script 向外部站点发出请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14015830/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com