1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113
|
const ALLOWED_ORIGIN = [/^https:\/\/lanyundev\.com\/$/];
const ALLOW_NO_ORIGIN = false;
const ALLOWED_Referer = [/^https:\/\/lanyundev\.com\/$/];
const ALLOW_NO_Referer = false;
const CACHE_CONTROL = 'public, max-age=2592000';
function validateOrigin(req) { const origin = req.headers.get('Origin'); if (origin) { for (let i = 0; i < ALLOWED_ORIGIN.length; i++) { if (ALLOWED_ORIGIN[i].exec(origin)) { return true; } } } return ALLOW_NO_ORIGIN; }
function validateReferer(req) { const Referer = req.headers.get('Referer'); if (Referer) { for (let i = 0; i < ALLOWED_Referer.length; i++) { if (ALLOWED_Referer[i].exec(Referer)) { return true; } } } return ALLOW_NO_Referer; }
function handleOptions(req) { const rawOrigin = req.headers.get('Origin'); const rawMethod = req.headers.get('Access-Control-Request-Method'); const rawHeaders = req.headers.get('Access-Control-Request-Headers');
const res = new Response(null, { status: 200 }); res.headers.set('Access-Control-Allow-Origin', rawOrigin); rawMethod && res.headers.set('Access-Control-Allow-Methods', rawMethod); rawHeaders && res.headers.set('Access-Control-Allow-Headers', rawHeaders); res.headers.set('Access-Control-Max-Age', 86400); res.headers.set('Content-Type', 'application/javascript; charset=utf-8'); res.headers.append('Vary', 'Accept-Encoding'); res.headers.append('Vary', 'Origin'); return res; }
function handleReject() { return new Response('[LanYun_Blog] REQUEST NOT ALLOWED', { status: 403, }); }
addEventListener("fetch", event => { const req = event.request; const validOrigin = validateOrigin(req); const origin = req.headers.get('Origin'); const validReferer = validateReferer(req); if ( ( validReferer) || (validOrigin && validReferer && origin) ) { if (req.method === 'OPTIONS') { event.respondWith(handleOptions(req)); } else { event.respondWith(handleRequest(req)); } } else { return; event.respondWith(handleReject()); } })
async function handleRequest(request) { const rawOrigin = request.headers.get('Origin'); const ip = request.headers.get("cf-connecting-ip") res = new Response('var returnCitySN = {"cip": "' + ip + '"};', { status: 200 }) res.headers.set('Access-Control-Allow-Origin', 'https://lanyundev.com/'); res.headers.set('Cache-Control', CACHE_CONTROL); res.headers.set('Access-Control-Max-Age', 86400); res.headers.set('Content-Type', 'application/javascript; charset=utf-8'); res.headers.append('Vary', 'Accept-Encoding'); res.headers.append('Vary', 'Origin'); return res }
|