//这个代码是用example1.com反代example2.com
constcurrent='example1.com'constorigin='example2.com'addEventListener('fetch',event=>{event.respondWith(handleRequest(event.request))})asyncfunctionhandleRequest(request){// new URL object to play with,
// based on the one being requested.
// e.g. https://domain.com/blog/page
varurl=newURL(request.url)// set hostname to the place we're proxying requests from
url.hostname=originurl.protocol='https:';console.log(url.pathname);// remove the first occurence of /blog
// so it requests / of the proxy domain
// pass the modified url back to the request,
letresponse=awaitfetch(url,request)if(request.url.endsWith('.png')||request.url.endsWith('.jpg')||request.url.endsWith('.css')||request.url.endsWith('.gif')){returnresponse}let{readable,writable}=newTransformStream()streamBody(response.body,writable)returnnewResponse(readable,response)}asyncfunctionstreamBody(readable,writable){letreader=readable.getReader()letwriter=writable.getWriter()constdecoder=newTextDecoder('utf-8')constencoder=newTextEncoder('utf-8')letbody=''while(true){const{done,value}=awaitreader.read()if(done)breakbody+=decoder.decode(value)}body=body.replace(newRegExp(current,'g'),origin);awaitwriter.write(encoder.encode(body))awaitwriter.close()}
说些什么吧!