Nadzorna plošča se v brskalniku na prenosniku odpre brez težav, a ista skripta za preglednico spodleti z napako o nedosegljivem naslovu. Vklop ali izklop VPN ne spremeni ničesar, ker zahteva prenosnika sploh ne zapusti. Apps Script se izvaja v Googlovi infrastrukturi in od tam odpre svojo povezavo. To eno dejstvo določa celotno zasnovo.

Preden karkoli spremenite, ločite dve vprašanji: kateri stroj pošilja zahtevo in katere poverilnice sprejme prejemnik.

Zahteva se nikoli ne začne na vašem prenosniku

Zavihek brskalnika pošilja s prenosnika, skozi VPN adapter, notranjo pripono DNS in v zasebno podomrežje. UrlFetchApp pošilja z gostitelja, ki ga upravlja Google, zato vidi Googlove razreševalnike, Googlove izhodne naslove in nobene od vaših poti split-tunnel. Obe poti si delita dokument preglednice, ne omrežne lokacije. V dnevniku dostopa aplikacije se poskus skripte pokaže kot Googlov naslov in ne kot naslov iz bazena VPN, in to je najhitrejša potrditev, ki jo boste dobili.

Zato lokalni popravki ne naredijo ničesar. Usmerjanje prenosnika na drug razreševalnik, ponovni zagon odjemalca VPN ali dodajanje vnosa v hosts spremeni pot brskalnika, pot skripte pa pusti natanko takšno, kakršna je bila.

Kaj to izključuje

Do končne točke, dostopne samo od znotraj, se iz Apps Scripta ni mogoče prebiti, seznam dovoljenih naslovov IP pa je na tem mestu šibka zamenjava za nadzor dostopa. Googlovi izhodni razponi so široki, deljeni z drugimi strankami in jih ni mogoče vezati na eno skripto. Referenca UrlFetchApp navaja, da zahteve izvirajo iz Googlovega bazena naslovov IP, kar je verodostojna različica te trditve. Odpiranje notranje aplikacije tem razponom spusti noter promet, ki ga ne morete pripisati.

Seje brskalnika se obnašajo enako. Piškotek ali seja SSO v brskalniku prenosnika ne potuje z zahtevo, ki je nov odjemalec HTTPS brez stanja seje. Vse, kar je odvisno od preusmeritve SSO v brskalniku, se konča pri tej preusmeritvi in ne pri vaših podatkih.

Dve izvedljivi obliki

Prva oblika skripti da odobren API. Objavite notranjo storitev za prehodom, ki preveri identiteto klicatelja, nato pa naj skripta predloži poverilnico, ki jo prehod sprejme, na primer žeton servisnega računa. V Apps Scriptu to pomeni knjižnico OAuth2 ali ScriptApp.getOAuthToken(), poleg tega pa seznam dovoljenih identitet klicatelja na strani API namesto seznama naslovov IP.

Druga oblika obrne smer. Notranja opravila poizvedejo v zasebnem sistemu in objavijo nadzorovan rezultat v Sheet, predmet v Cloud Storage ali tabelo v BigQuery, ki jo skripta bere. Opravilo v Cloud Run, lokalni razporejevalnik ali obstoječi korak ETL so lahko to opravilo in nobeno od njih ni treba sprejeti dohodne povezave. Preglednica nato porablja zbirko podatkov namesto vmesnika.

Katera oblika zmaga, je odvisno od svežine, nadzora na ravni polj in od tega, kdo mora biti sposoben revidirati bralca.

Kaj mora vsebovati objavljeni rezultat

Tok v obratni smeri potrebuje izrecno pogodbo: polja, ki jih nosi, interval osveževanja, skupino bralcev in kaj se zgodi, ko notranje opravilo spodleti. Brez teh štirih preglednica tiho prikazuje včerajšnje številke. Dodajte ustvarjen stolpec s časovnim žigom in število vrstic, da je zastarel ali delno objavljen rezultat viden v sami preglednici, ne da bi kdo odprl dnevnik.

Tudi smer API potrebuje pogodbo: katere poverilnice sprejme prehod, katere scopes nosi žeton in katere identitete klicatelja so dovoljene. Odgovor 200, ki vsebuje prijavno stran, ni uspešen klic, zato preverite telo in ne le kodo stanja.

Napako berite s prave strani

Apps Script nedosegljivega gostitelja sporoči kot izjemo o nedosegljivem naslovu, kar ni sporočilo brskalnika o zavrnjeni povezavi. 403 s prehoda pomeni, da je zahteva prispela in da je bila poverilnica ali pravilnik zavrnjen. HTML prijavna stran pomeni, da je zahteva dosegla interaktivni sloj, ki ga skripta ne more dokončati. Tri različne napake s tremi različnimi odgovornimi.

Dnevnik skripte hranite ob rezultatu brskalnika, namesto da bi eno zamenjali z drugim. Preostalo vprašanje je potem običajna integracijska odločitev: temu okolju dati dostop, ki ga potrebuje, ali mu dostaviti nadzorovan rezultat.

Sorodni članki