在 Chrome 扩展中使用 Javascript 从 tmi.twitch.tv 获取 JSON
Getting JSON from tmi.twitch.tv with Javascript in a Chrome extension
我正在尝试在 Chrome 扩展中使用 Javascript 获得 https://tmi.twitch.tv/hosts?include_logins=1&host=105458682 的结果 JSON,但到目前为止我没有成功。
当我在 Google Chrome 的选项卡中打开它时,我得到以下 JSON 响应:
{"hosts":[{"host_id":105458682,"target_id":49780445,"host_login":"bobross","target_login":"misscoookiez"}]}
但是如果我尝试从 Javascript 进行相同的调用(更准确地说是 Javascript 在 Chrome 扩展中使用),我将收到以下错误:
XMLHttpRequest cannot load https://tmi.twitch.tv/hosts?include_logins=1&host=113403683. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'chrome-extension://deooplkjmdhjdicmeijmecmlnapmjhkd' is therefore not allowed access.
我在Javascript中使用的代码是:
function callTwitch() {
var req = new XMLHttpRequest();
req.overrideMimeType("application/json");
req.open("GET", "https://tmi.twitch.tv/hosts?include_logins=1&host=105458682" , true);
req.onreadystatechange = function() {
if (req.readyState == 4) {
if (req.status == "200") {
var data = JSON.parse(req.responseText);
// Do something with data
} else {
// Do something else
}
}
};
req.send(null);
};
google了一下,发现是CORS的问题。 Twitch 没有在他们的服务器上将 Access-Control-Allow-Origin
设置为 *
,这似乎阻止了我。我尝试了很多不同的方法来获得 JSON 但都没有成功。
我不明白这个 JSON 在从选项卡获取时如何以及为什么可用,而在从 Javascript...
获取时不可用
谁能帮帮我?有没有办法从 Javascript 得到这个 JSON?
我最终找到了如何从 Chrome 扩展进行跨源 XMLHttpRequest 调用:我只需要添加“https://tmi.twitch.tv/" to the permissions in manifest.json, and my original code started working. More about that here : https://developer.chrome.com/extensions/xhr
我正在尝试在 Chrome 扩展中使用 Javascript 获得 https://tmi.twitch.tv/hosts?include_logins=1&host=105458682 的结果 JSON,但到目前为止我没有成功。
当我在 Google Chrome 的选项卡中打开它时,我得到以下 JSON 响应:
{"hosts":[{"host_id":105458682,"target_id":49780445,"host_login":"bobross","target_login":"misscoookiez"}]}
但是如果我尝试从 Javascript 进行相同的调用(更准确地说是 Javascript 在 Chrome 扩展中使用),我将收到以下错误:
XMLHttpRequest cannot load https://tmi.twitch.tv/hosts?include_logins=1&host=113403683. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'chrome-extension://deooplkjmdhjdicmeijmecmlnapmjhkd' is therefore not allowed access.
我在Javascript中使用的代码是:
function callTwitch() {
var req = new XMLHttpRequest();
req.overrideMimeType("application/json");
req.open("GET", "https://tmi.twitch.tv/hosts?include_logins=1&host=105458682" , true);
req.onreadystatechange = function() {
if (req.readyState == 4) {
if (req.status == "200") {
var data = JSON.parse(req.responseText);
// Do something with data
} else {
// Do something else
}
}
};
req.send(null);
};
google了一下,发现是CORS的问题。 Twitch 没有在他们的服务器上将 Access-Control-Allow-Origin
设置为 *
,这似乎阻止了我。我尝试了很多不同的方法来获得 JSON 但都没有成功。
我不明白这个 JSON 在从选项卡获取时如何以及为什么可用,而在从 Javascript...
谁能帮帮我?有没有办法从 Javascript 得到这个 JSON?
我最终找到了如何从 Chrome 扩展进行跨源 XMLHttpRequest 调用:我只需要添加“https://tmi.twitch.tv/" to the permissions in manifest.json, and my original code started working. More about that here : https://developer.chrome.com/extensions/xhr