CORS GM

CORS via GM.xmlHttpRequest

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Greasemonkey 油猴子Violentmonkey 暴力猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Violentmonkey 暴力猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Userscripts ,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展后才能安装此脚本。

(我已经安装了用户脚本管理器,让我安装!)

Advertisement:

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

(我已经安装了用户样式管理器,让我安装!)

Advertisement:

// ==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');
})();