Hindi maaaring i-disable ng VPN ang CORS, binabago nito ang tugon
Hindi ginagawang pareho ng bagong exit address ang dalawang pinagmulan. Kunin ang mga header ng tugon sa dalawang landas at ihambing ang mga ito bago sisihin ang pagpapatupad ng CORS.
Simulan sa paghihiwalay ng dalawang bagay na nagbago nang sabay: ang landas ng network at ang pagpapatupad ng browser. Binabago ng VPN ang exit address; hindi nito binabago ang pinagmulan ng pahina, na binubuo ng scheme, host at port. Kung nagtagumpay na ngayon ang kahilingan, may nagbago sa tugon, o ang kahilingan mismo ang nagbago. Ang pagtukoy kung alin ang buong imbestigasyon.
Ang CORS ay isang protocol ng header na ipinapatupad ng browser, kaya wala sa landas ng network ang makakapag-disable nito.
Ang pinagmulan ay hindi IP address
Ang pinagmulan ay scheme, host at port. Hindi ito ang address na pinagmumulan ng mga packet, at hindi ito ang IP na nakikita ng server. Kaya nga binabago ng VPN ang bawat nakikitang address at pinapanatiling pareho ang pinagmulan. Inihahambing ng browser ang Access-Control-Allow-Origin ng tugon sa pinagmulan ng pahina, at ang exit address ay hindi kailanman pumapasok sa paghahambing na iyon.
Kaya ang isang extension o proxy na tila nag-aayos ng CORS error ay gumagawa ng iba: nagsusulat muli ng mga header, o nagruruta ng kahilingan para hindi na ito cross-origin. Wala sa dalawa ang katangian ng VPN.
Ano ang aktuwal na ipinapadala ng browser
Para sa cross-origin na kahilingan na hindi simple, nagpapadala muna ang browser ng preflight OPTIONS, na nagdadala ng sasadyang method at mga header. Dapat tumugon ang server gamit ang mga pahintulot na ibinibigay nito, at ang tunay na kahilingan ay sumusunod lamang kung ang tugon ay nakakatugon sa mga patakaran. Binabago ng VPN ang landas na nagdadala ng dalawang palitan at maaaring baguhin ang itinutugon ng mga intermediate na serbisyo. Hindi nito binabago ang origin string o ang pangangailangan ng preflight.
Karaniwang walang ipinapakita ang command-line client tungkol dito. Maaaring hindi ito magpadala ng Origin header, madalas nilalaktawan ang preflight, at maaaring magdala ng ibang kredensyal. Ang katawang ibinalik sa curl ay nagpapatunay na sinagot ng server ang curl.
Hanapin ang tugon na nagbago
Ihambing ang aktuwal na tugon sa bawat landas, hindi lamang ang status code. Tingnan ang mga header na may pahintulot ng CORS, ang uri ng nilalaman, anumang redirekta, at kung ang isang variant ng WAF o CDN ay gumawa ng ibang pahina. Ang pagtanggi ayon sa rehiyon, redirekta ng pagpapatunay o pahina ng error na walang pahintulot na header ay pawang nabibigo sa browser habang mukhang CORS bug. Iyon ay mga pagkakaiba ng landas ng paghahatid, at iyon ang dapat idokumento.
Kunin ang mga header ng tugon mula sa dalawang landas at ihambing ang mga ito nang linya-linya. Kung ang tanging pagkakaiba ay ang nawawalang Access-Control-Allow-Origin sa isang pahina ng error, natagpuan mo ang sanhi.
Ayusin ang serbisyo, hindi ang pagpapatupad
Kapag serbisyo mo ito, sabihin nang tahasan ang mga pinapayagang pinagmulan at katangian ng kahilingan, pagkatapos basahin ang mga error na nililikha ng frontend at mga tagapamagitan nito. Kung hindi, magpadala sa may-ari ng serbisyo ng nilinis na paghahambing. Huwag kailanman isama ang cookies, authorization header o session export sa ulat na iyon, dahil iyon ang mga kredensyal na pinoprotektahan ng patakaran.
Iwasan ang mga extension ng browser na nag-disable ng CORS. Binabago nila ang hangganan ng seguridad habang itinatago ang pagkakaiba ng tugon na kailangang ipaliwanag, at iniiwan ang parehong pagkabigo para sa bawat ibang gumagamit.
Itala ang dalawang tugon, ang pinagmulan na ginamit at ang landas na tinahak. Ang talaang iyon ay ginagawang bug ng serbisyo ang tsismis tungkol sa VPN.