diff --git a/ext/bg/js/ankiweb.js b/ext/bg/js/ankiweb.js index 41bf74bd..dc6a5d49 100644 --- a/ext/bg/js/ankiweb.js +++ b/ext/bg/js/ankiweb.js @@ -21,6 +21,15 @@ class AnkiWeb { this.username = username; this.password = password; this.noteInfo = null; + + chrome.webRequest.onBeforeSendHeaders.addListener( + details => { + details.requestHeaders.push({name: 'Origin', value: 'https://ankiweb.net'}); + return {requestHeaders: details.requestHeaders}; + }, + {urls: ['https://ankiweb.net/*']}, + ['blocking', 'requestHeaders'] + ); } addNote(note) { @@ -133,20 +142,22 @@ class AnkiWeb { static loadPage(url, data) { return new Promise((resolve, reject) => { + let dataEnc = null; if (data) { const params = []; for (const key in data) { params.push(`${encodeURIComponent(key)}=${encodeURIComponent(data[key])}`); } - url += '?' + params.join('&'); + dataEnc = params.join('&'); } const xhr = new XMLHttpRequest(); xhr.addEventListener('error', () => reject('failed to execute network request')); xhr.addEventListener('load', () => resolve(xhr.responseText)); - xhr.open('GET', url); - xhr.send(); + xhr.open('POST', url); + xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded'); + xhr.send(dataEnc); }); } } diff --git a/ext/manifest.json b/ext/manifest.json index 1b407bcb..6320e072 100644 --- a/ext/manifest.json +++ b/ext/manifest.json @@ -24,7 +24,14 @@ "options_ui": { "page": "bg/options.html" }, - "permissions": ["file://*/*", "http://127.0.0.1/*", "storage"], + "permissions": [ + "webRequest", + "webRequestBlocking", + "file://*", + "http://127.0.0.1/*", + "https://ankiweb.net/*", + "storage" + ], "web_accessible_resources": [ "fg/css/frame.css", "fg/img/add_kanji.png",