CORS via GM.xmlHttpRequest
// ==UserScript==
// @name CORS GM
// @version 1.1
// @description CORS via GM.xmlHttpRequest
// @match *://*/*
// @grant GM_xmlhttpRequest
// @grant unsafeWindow
// @connect *
// @run-at document-start
// @namespace https://greasyfork.org/users/1617149
// ==/UserScript==
(function () {
'use strict';
function gmFetch(url, options = {}) {
return new Promise((resolve, reject) => {
GM_xmlhttpRequest({
method: options.method || 'GET',
url: url,
responseType: 'blob',
onload: (res) => {
resolve(new Response(res.response, {
status: res.status,
statusText: res.statusText
}));
},
onerror: reject,
ontimeout: reject
});
});
}
if (typeof unsafeWindow !== 'undefined') {
unsafeWindow.fetchViaGM = gmFetch;
unsafeWindow.CORSViaGM = { fetchViaGM: gmFetch };
}
window.fetchViaGM = gmFetch;
window.CORSViaGM = { fetchViaGM: gmFetch };
console.log('[CORS Via GM] READY');
})();