Created
October 6, 2023 12:05
-
-
Save ZiYueCommentary/96db158ff92c8fe51834a981707a6358 to your computer and use it in GitHub Desktop.
An out-of-the-box Github Mirror for Cloudflare Workers.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
addEventListener('fetch', event => { | |
event.respondWith(fetchAndApply(event.request)); | |
}) | |
async function fetchAndApply(request) { | |
let url = new URL(request.url); | |
url.protocol = 'https:'; | |
let new_request_headers = new Headers(request.headers); | |
new_request_headers.set('Host', url.hostname); | |
new_request_headers.set('Referer', url.hostname); | |
let original_response = await fetch(url.href.replace(url.hostname, 'github.com'), { | |
method: request.method, | |
headers: new_request_headers | |
}) | |
let original_response_clone = original_response.clone(); | |
let original_text = null; | |
let new_response_headers = new Headers(original_response.headers); | |
new_response_headers.set('access-control-allow-origin', '*'); | |
new_response_headers.set('access-control-allow-credentials', 'true'); | |
new_response_headers.delete('content-security-policy'); | |
new_response_headers.delete('content-security-policy-report-only'); | |
new_response_headers.delete('clear-site-data'); | |
const content_type = new_response_headers.get('content-type'); | |
if (content_type.includes('text/html')) { | |
original_text = (await original_response_clone.text()).replaceAll('https://github.com', 'https://' + url.hostname); | |
} else { | |
original_text = original_response_clone.body | |
} | |
return new Response(original_text, { | |
status: original_response.status, | |
headers: new_response_headers | |
}); | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment