Разумевање CORS политике и улога заглавља контроле приступа
Дељење ресурса између различитих порекла (CORS) је безбедносни механизам који веб-прегледачи користе како би контролисали када скрипте покренуте на једној веб-страници могу да приступе ресурсима на другом пореклу. Порекло је дефинисано комбинацијом шеме, хоста и порта. Када се ови елементи разликују између локације са које се шаље захтев и локације која прима захтев, прегледач примењује CORS правила како би заштитио корисничке податке.
Алат CORS провера омогућава вам да анализирате да ли би веб-прегледач дозволио одређени захтев из другог порекла на основу HTTP заглавља одговора која доставите и специфичних детаља вашег захтева. Алат ради тако што анализира унесена заглавља, упоређује их са параметрима захтева и објашњава донету одлуку на основу стандардних CORS правила.
Разликовање стварног одговора и preflight одговора
У CORS спецификацији постоји јасна разлика између стварног одговора на захтев и одговора прије прегледа (preflight response). Ова разлика одређује како ће прегледач третирати заглавља и статус одговора:
- Стварни одговор: Овај тип одговора се користи за проверу да ли код прегледача може директно прочитати конкретан одговор на упућени захтев.
- Preflight одговор: Овај одговор се шаље као реакција на
OPTIONSзахтев који прегледач аутоматски упућује пре стварног захтева како би утврдио да ли сервер одобрава каснији метод и тражена имена заглавља.
Када се проверава preflight одговор, неопходно је унети и HTTP статусну линију у поље за заглавља како би се потврдио статус одговора. Ако унесени preflight одговор не садржи HTTP статусну линију, резултат провере ће бити означен као неодређен.
Утицај акредитива на CORS правила и замјенске знакове
Укључивање акредитива, као што су колачићи или HTTP аутентификација, значајно мења начин на који прегледач тумачи CORS заглавља. Када су акредитиви укључени у захтев, примењују се следећа строга правила:
- Вредност заглавља
Access-Control-Allow-Originне може бити замјенски знак (*). Порекло мора бити експлицитно наведено и мора се тачно подударати са пореклом захтева. - Замјенски знакови за дозвољене методе и заглавља губе своје значење замјенских знакова. То значи да се заглавље
Access-Control-Allow-Headers: *илиAccess-Control-Allow-Methods: *неће третирати као дозвола за било које заглавље или метод. - Заглавље
Access-Control-Allow-Credentialsмора имати тачну вредностtrue. Ако ово заглавље недостаје или има било коју другу вредност, прегледач ће блокирати захтев са акредитивима.
Ако акредитиви нису укључени у захтев, заглавље Access-Control-Allow-Credentials не утиче на одлуку прегледача, а употреба замјенских знакова је дозвољена под одређеним условима.
Специфичности заглавља Authorization и сигурних метода
Током CORS провере, одређени методи и заглавља имају посебан третман у прегледачу:
- Методе заштићене CORS-ом (CORS-safelisted methods): Одређене стандардне методе су безбедне и не захтевају експлицитно одобрење унутар заглавља
Access-Control-Allow-Methodsтоком preflight провере. - Заглавље Authorization: Ово заглавље представља изузетак од општег правила за замјенске знакове. Чак и када захтев не укључује акредитиве и када је присутно заглавље
Access-Control-Allow-Headers: *, заглављеAuthorizationмора бити експлицитно наведено у листи дозвољених заглавља како би прегледач одобрио захтев.
Како функционише CORS провера и ограничења анализе
Алат ради потпуно локално унутар вашег веб-прегледача. Сви уноси, укључујући HTTP заглавља одговора и детаље захтева, процесирају се искључиво на вашем уређају. Подаци се не шаљу на спољне сервере нити се чувају на платформи BroBroGo.
Приликом коришћења алата, важно је имати на уму следећа техничка ограничења:
- Алат искључиво анализира текстуалне вредности заглавља и параметре које сами унесете. Он не контактира удаљени сервер, не чита стварне URL адресе, не поставља колачиће, нити врши провере DNS-а или TLS сертификата.
- Пролазни резултат анализе потврђује исправност само за налепљени одговор и унете детаље. Он не може да предвиди нити да гарантује понашање у реалном времену, које може бити измењено услед преусмеравања, кеширања одговора на серверу или локалних екстензија у прегледачу корисника.
Често постављана питања (FAQ)
Да ли да налепим стварни одговор или preflight одговор?
Користите Стварни одговор да проверите може ли код прегледача прочитати један одговор. Користите одговор прије прегледа за OPTIONS одговор који одобрава каснији метод и његова тражена имена заглавља.
Зашто замјенски знак може пропасти с акредитивима?
Када су укључени колачићи или HTTP аутентификација, дозвољено порекло мора тачно одговарати поријеклу захтјева. Замјенски знакови за дозвољене методе и заглавља такођер губе своје значење замјенских знакова.
Доказује ли пролазни резултат да ће захтјев уживо функционирати?
Не. Овај резултат покрива само налепљени одговор и детаље захтјева унесене овдје. Преусмјеравања, кеширани одговори, промјена правила сервера, екстензије прегледача и стварни одговор након preflightа и даље могу промијенити исход.
Која су ограничења за унос HTTP заглавља у овом алату?
Максимална дужина уноса за HTTP заглавља одговора је 200.000 знакова. Сваки ред уноса мора представљати важеће HTTP заглавље или статусну линију, са исправно форматираним називима заглавља, иначе ће алат пријавити грешку приликом провере.