Ar „JavaScript“ gali pakeisti jūsų naršyklės tarpinį serverį?
Atskirkite įprastą tinklalapio kodą nuo autorizuoto naršyklės plėtinio, galinčio nustatyti tarpinį serverį.
Tinklalapyje veikiantis scenarijus neturi bendro nustatymo, kuris pakeistų naršyklės išeinantį tarpinį serverį. Naršyklės plėtinys gali turėti papildomų leidimų, tačiau jis veikia pagal kitokį saugos ir konfigūracijos modelį.
Šis skirtumas pasimeta senuose forumų atsakymuose. Kodas, naudojantis privilegijuotas „Firefox“ vidines dalis, senus plėtinių modulius ar apleistus add-on SDK, niekada nebuvo įprasta tinklalapio API. Tokio fragmento įklijavimas į puslapį nesuteikia tų teisių.
Naudokite naršyklės plėtinių API
„Firefox“ plėtinys gali naudoti dokumentuotą proxy.settings API su reikiamais leidimais. „Chrome“ siūlo savo tarpinio serverio plėtinių API. Jų konfigūracijos modeliai skiriasi; patikrinkite manifest reikalavimus ir palaikomus nustatymus jūsų pasirinktai naršyklei.
Plėtinys taip pat turėtų atsižvelgti į tas pačias nuostatas valdančias politikas ar kitus plėtinius. Sėkmingas API kvietimas nėra priežastis manyti, kad kiekviena paskirties vieta dabar eina numatytu maršrutu. Patikrinkite gautą konfigūraciją ir išsaugokite vartotojo galimybę ją atkurti.
Pakeitus fetch URL, pasikeičia paskirties vieta
Tinklalapis gali iškviesti programos serverį, kuris persiunčia užklausą jo vardu, laikantis naršyklės žiniatinklio taisyklių. Pagal šią schemą naršyklė jungiasi prie to programos serverio. Ji neįdiegė bendro naršyklės tarpinio serverio ir nepakeitė nesusijusių skirtukų maršruto.
Panašiai, antraštės su kitu IP adresu siuntimas nekeičia ryšio šaltinio adreso. Paskirties vieta gali interpretuoti patikimus persiuntimo metaduomenis pagal savo politiką, tačiau tinklo kelias yra atskiras faktas.
Jei jūsų tikslas yra IP keičiantis tarpinis serveris naršymui, pasirinkite tinkamą įrašą iš nemokamų tarpinių serverių sąrašo ir sukonfigūruokite palaikomą naršyklės tarpinį serverį arba autorizuotą plėtinį. Jei tikslas yra vienos žiniatinklio programos nuotolinis fetch, projektuokite šią funkciją atsižvelgdami į tikrąsias jos serverio ir naršyklės ribas.