manifest.json{ "name": "Allow-Control-Allow-Origin: *", "version": "1.0", "manifest_version": 2, "description": "Allow to you request any site with ajax from any source. Add to response - 'Allow-Control-Allow-Origin: *' header", "background": {
рдереЛрдбрд╝рд╛ рдФрд░ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ:
-
"рдкреГрд╖реНрдарднреВрдорд┐" -
рдПрдХ ,
рджреЛ рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ - рдЬрдм рдХреНрд░реЛрдо рдкреГрд╖реНрдарднреВрдорд┐ рдореЗрдВ рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИ рддреЛ рдХрд╛рдо рдХреЗ рд╡рд┐рд╕реНрддрд╛рд░ рдХреЗ рд▓рд┐рдПред
"рдЕрдиреБрдорддрд┐рдпрд╛рдБ": ["*: // * / *"] рдЙрди рд╕рд╛рдЗрдЯреЛрдВ рдХреЗ рдкрддреЗ рдЬрд╣рд╛рдВ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЬрд╣рд╛рдВ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рд╕реЗ рдЕрдЬрд╛рдХреНрд╕ рдЕрдиреБрд░реЛрдз рднреЗрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рдкрд╣реБрдВрдЪ рдХрд╛ рд╕рдВрдХреЗрдд рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред
"Content_scripts" рдХреЗ рд▓рд┐рдП рд╡реИрдХрд▓реНрдкрд┐рдХ: [...],
рдпрджрд┐ рдЖрдкрдХреЛ рдХрд┐рд╕реА рдЦреБрд▓реА рд╕рд╛рдЗрдЯ рдХреЗ рдкреГрд╖реНрдареЛрдВ рдкрд░ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рд╕реАрдзреЗ рдПрдореНрдмреЗрдб рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ (рдЙрдкрдпреЛрдЧреА рд╣реИ рдпрджрд┐ рдЖрдкрдХреЛ рд╕рд╛рдЗрдЯ рдХреА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдШреЛрд╖рд┐рдд рдХрд╛рд░реНрдпреЛрдВ рдФрд░ рдЪрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЕрдиреНрдпрдерд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдЕрдкрдиреЗ рджрд╛рдпрд░реЗ рдореЗрдВ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдФрд░ рд╕рд╛рдЗрдЯ рдХреА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЕрдкрдиреЗ рдЖрдк рдореЗрдВ)
-
"Browser_action" - рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХреЛ рд╕рдХреНрд╖рдо рдпрд╛ рдЕрдХреНрд╖рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдмрдЯрди рдЬреЛрдбрд╝рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ
рдкреЗрдЬ_рдПрдХреНрд╢рди рдХрд╛ рд╡рд┐рдХрд▓реНрдк
рдПрдХ рд╣реА рд╕рдордп рдореЗрдВ рдкреЗрдЬ_рдПрдХреНрд╢рди рдФрд░ рдмреНрд░рд╛рдЙрдЬрд╝рд░_рдПрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ
-
WebRequest API рдФрд░ webRequestBlocking - рдЕрдиреБрд░реЛрдз рдФрд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рд╣реЗрдбрд░ рдХреЛ рдмрджрд▓реЗрдВ
-
"web_accessible_resources" - рдЕрдиреНрдпрдерд╛ рдЪрд┐рддреНрд░ рдХрд╛ рдкрде рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрдирд╛ рдЪрд╛рд╣рд┐рдП:
рд░рд╛рд╕реНрддрд╛ рдЪрд╛рд╣рд┐рдП:рдкреГрд╖реНрдарднреВрдорд┐-рдЫрд╡рд┐: url ("/ sprites.png");
рд╕реАрдПрд╕рдПрд╕рдкреГрд╖реНрдарднреВрдорд┐-рдЫрд╡рд┐: url ('рдХреНрд░реЛрдо-рдПрдХреНрд╕рдЯреЗрдВрд╢рди: //__MSG_@@extension_id__/sprites.png');
рдЬреЗ рдПрд╕var url = chrome.extension.getURL ('sprites.png');
backgound.js var requestListener = function(details){ var flag = false, rule = { name: "Origin", value: "http://evil.com/" }; for (var i = 0; i < details.requestHeaders.length; ++i) { if (details.requestHeaders[i].name === rule.name) { flag = true; details.requestHeaders[i].value = rule.value; break; } } if(!flag) details.requestHeaders.push(rule); return {requestHeaders: details.requestHeaders}; }; var responseListener = function(details){ var rule = { "name": "Access-Control-Allow-Origin", "value": "*" }; details.responseHeaders.push(rule); return {responseHeaders: details.responseHeaders}; }; chrome.runtime.onInstalled.addListener(function(){ localStorage.active = false; }); chrome.browserAction.onClicked.addListener(function(tab){ if(localStorage.active === "true"){ localStorage.active = false; chrome.browserAction.setIcon({path: "off.gif"}); chrome.webRequest.onHeadersReceived.removeListener(responseListener); chrome.webRequest.onBeforeSendHeaders.removeListener(requestListener); }else{ localStorage.active = true; chrome.browserAction.setIcon({path: "on.gif"}); chrome.webRequest.onHeadersReceived.addListener(responseListener,{ urls: [ "*://*/*" ] },["blocking", "responseHeaders"]); chrome.webRequest.onBeforeSendHeaders.addListener(requestListener,{ urls: [ "*://*/*" ] },["requestHeaders"]); } });
рдХреЛрдб рджреНрд╡рд╛рд░рд╛ рдЕрдзрд┐рдХ рдЬрд╛рдирдХрд╛рд░реА:
OnHeadersReceived рдФрд░
onBeforeSendHeaders рдХреЗ рд▓рд┐рдП рдХреЙрд▓рдмреИрдХ рдиреЗ
рдХреНрд░рдорд╢рдГ рд░рд┐рд╕реНрдкрд╛рдВрд╕рд▓рд┐рдВрдЯрд░ рдФрд░
рд░рд┐рдХреНрд╡реЗрд╕реНрдЯрд▓реАрдирд░ рдХреЛ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдХрд╛рд░реНрдпреЛрдВ рдореЗрдВ рд▓рдЧрд╛рдпрд╛, рддрд╛рдХрд┐ рд╣реЗрдбрд░ рдХреЛ рдЪрд╛рд▓реВ рдФрд░ рдмрдВрдж рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рд╕реНрд╡рд┐рдЪ рдХреЛ рдмрджрд▓рд╛ рди рдЬрд╛рдПред рдШреБрдбрд╝рд╕рд╡рд╛рд░
рд╣реИрдВрдбрд▓рд░ рдХреЛ рд╣рдЯрд╛рдПрдВ
chrome.runtime.onInstalled - рдПрдХ рдмрд╛рд░ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рд╣реЛ рдЬрд╛рдПрдЧрд╛ - рд╡рд╣рд╛рдБ рдЖрдк рдкреНрд▓рдЧрдЗрди рдХреА рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╕реНрдерд┐рддрд┐ рдХреЛ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ
chrome.browserAction.onClicked .addListener - рдЬрдм рд╣рдо рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдмрдЯрди рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рддреЗ рд╣реИрдВ - рд╣рдо рдИрд╡реЗрдВрдЯ рдХреЛ рдкрдХрдбрд╝рддреЗ рд╣реИрдВ рдФрд░ рдкреНрд▓рдЧрдЗрди рдХреЛ рдЪрд╛рд▓реВ рдФрд░ рдмрдВрдж рдХрд░рддреЗ рд╣реИрдВ
рдЕрдЧрд░ (localStorage.active === "рд╕рдЪ") - рдХрд┐рд╕реА рдХрд╛рд░рдг рд╕реЗ, рд╣рд░ рдмрд╛рд░ рдореИрдВ рдЗрд╕ рдкрд░ рдареЛрдХрд░ рдЦрд╛рддрд╛ рд╣реВрдВ рдФрд░ рдпрд╣ рднреВрд▓ рдЬрд╛рддрд╛ рд╣реВрдВ рдХрд┐ рд▓реЛрдХрд▓рд╕реНрдЯреЛрд░реЗрдЬ рдореЗрдВ рдЪрд╛рдмрд┐рдпрд╛рдБ <string> рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рд╣реИрдВ
рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рд╣рдореЗрдВ onBeforeSendHeaders рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдЪреВрдВрдХрд┐ Chrome рд╕реНрдерд╛рдиреАрдп рд╣реЛрд╕реНрдЯ рдХреЗ рд▓рд┐рдП ajax рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЛ рднреЗрдЬрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рджреЗрддрд╛ рд╣реИред
рд╡рд┐рд╕реНрддрд╛рд░ рдХреЗ рдкрд╣рд▓реЗ рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ, рдореИрдВрдиреЗ рдЗрд╕ рдкрд░ рдзреНрдпрд╛рди рдирд╣реАрдВ рджрд┐рдпрд╛ рдХреНрдпреЛрдВрдХрд┐ рдЬрдм рдореИрдВ рдХреНрд░реЛрдо рд╢реБрд░реВ рдХрд░рддрд╛ рд╣реВрдВ, рдореЗрд░реЗ рдкрд╛рд╕ рдзреНрд╡рдЬ рд╣реЛрддрд╛ рд╣реИ - рдлрд╛рдЗрд▓-рдПрдХреНрд╕реЗрд╕-рд╕реЗ-рдлрд╛рдЗрд▓реНрд╕
рдЖрдк
рдпрд╣рд╛рдВ рдФрд░
рдпрд╣рд╛рдВ рдЭрдВрдбреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рдкрдврд╝ рд╕рдХрддреЗ рд╣реИрдВ
редрдореЗрд░реЗ рдкрд╛рд╕ рдпреЗ рд╣реИрдВ:
рд╢реЙрд░реНрдЯрдХрдЯ рдкрд░ рд░рд╛рдЗрдЯ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ -> рдЧреБрдг -> рд▓рдХреНрд╖реНрдпC: \ Users \ Ololo \ AppData \ Local \ Google \ Chrome \ Application \ chrome.exe
--allow-file-access-from-files --remote-debugging-port = 9222 --allow-file-access-allow -рдХреНрд░реЙрд╕ рдореВрд▓ рдХреЗ рд▓реЗрдЦрди-рд╢реАрдШреНрд░