Пређи на садржај

Преузимање ресурса са различитих извора

С Википедије, слободне енциклопедије

Преузимање ресурса са различитих извора - у даљем тексту ПРРИ (енгл. Cross-origin resource sharing - CORS) је механизам који допушта да се ресурси који нису доступни (као што су фонтови, ЈаваСцрипт код, и слично), а који се налазе на веб страници, захтевају од другог домена који је ван оног из ког је захтев за ресурсом потекао.

Веб страница може слободно да уграђује слике, стил, скриптове, видео и остале потребне садржаје (као што је Адобе Фласх) са било ког другог домена. Међутим, уграђени веб фонтови и АЈАX (XМЛХттпРеqуест) захтеви су традиционално били ограничени на приступ са истог домена као родитеља веб странице (због безбедности). Захтеви за АЈАX-ом са различитих домена су подразумевано забрањени због могућности да се врше напредни захтеви (ПОСТ, ПУТ и ДЕЛЕТЕ, као и друге врсте ХТТП захтева, укључујући и специфична ХТТП заглавља) што може довести до разних безбедносних проблема.

Како ПРРИ функционише[уреди | уреди извор]

ПРРИ описује начин на који претраживач и сервер могу да комуницирају и одређује да ли је безбедно да се дозволе захтеви за садржајем са других домена. Овај вид дозвољава више слободе и функционалности него захтеви са извора истог порекла, али је много безбеднији него кад би се допустили сви видови размене између домена. Такође, овај вид комуникације је препоруцен од стране W3Ц.

ПРРИ стандард описује нова ХТТП заглавља која омогућују прегледачима и серверима да захтевају удаљене веб адресе само када имају дозволу. Иако неке од потврда и ауторизација могу бити изведена од стране сервера, углавном се од претраживача очекује да подржава та заглавља и рестрикције које они доносе[1].

За АЈАX и ХТТП методе које могу да измене информације, спецификација налаже да сами претраживачи ,,прелете" захтев, захтевајући подржане методе од сервера са ХТТП ОПТИОНС заглављем за захтеве, а потом, по потврди од стране сервера, шаљу стварне захтеве са стварним ХТТП методом за захтеве. Сервери такође могу да обавесте клијента да ли би "потврде"(укључујући колачиће и ХТТП податке за верификацију) требало да буду послате заједно са захтевима.[1]

Једноставан пример[уреди | уреди извор]

Базичан ПРРИ се састоји из два корака:

  1. Прегледач шаље захтев са Origin ХТТП заглављем. Дато заглавље садржи домен који је опслужио родитељску страницу. Када страница са http://www.foo.com покуша да приступи корисничким подацима на бар.цом, следећи захтев са шаље ка бар.цом:
Origin: http://www.foo.com
  1. Сервер може да одговори са :
    • Access-Control-Allow-Origin заглављем чиме ставља до знања које веб странице су доступне. На пример:
      Access-Control-Allow-Origin: http://www.foo.com
    • Страницом за грешку
    • Access-Control-Allow-Origin заглављем са назнаком да дозвољава све домене:
      Access-Control-Allow-Origin: *

Ово генерално није одговарајући начин када се користи полиса заједничког порекла. Једини случај када јесте је када се ради о неком домену који се сматра да је свима јавно доступан као што је на пример Гоогле фонтс.

Са друге стране, наведени пример комуникације је прикладан ако се користи модел безбедности који се на енглеском назива објецт-цапабилитy модел где странице имају сакривен УРЛ и једино им могу приступити они који имају кључ.

Приметимо да у ПРРИ архитектури, АЦАО заглавље поставља спољна веб страна (бар.цом), а не оригинална страна (фоо.цом). ПРРИ омогућава спољним веб сервисима да дају ауторизацију веб апликацијама да користе њихове сервисе и не контролише спољне сервисе којима приступају веб апликације.

Префлигхт пример[уреди | уреди извор]

Модерни прегледачи коју подржавају ПРРИ при раду са АЈАX захтевима ка различитим изворима ће додати ,,префлигхт" захтев да утврде да ли имају потребна овлашћења.

OPTIONS /
Host: bar.com
Origin: http://foo.com

Ако бар.цом одобрава захтев, онда ће одговорити са следећим заглављима:

Access-Control-Allow-Origin: http://foo.com
Access-Control-Allow-Methods: PUT, DELETE

Заглавља[уреди | уреди извор]

ХТТП заглавља коју су везана за ПРРИ су:

Заглавља за захтеве[уреди | уреди извор]

  • Оригин
  • Аццесс-Цонтрол-Реqуест-Метход
  • Аццесс-Цонтрол-Реqуест-Хеадерс

Заглавља за одговоре[уреди | уреди извор]

  • Аццесс-Цонтрол-Аллоw-Оригин
  • Аццесс-Цонтрол-Аллоw-Цредентиалс
  • Аццесс-Цонтрол-Еxпосе-Хеадерс
  • Аццесс-Цонтрол-Маx-Аге
  • Аццесс-Цонтрол-Аллоw-Метходс
  • Аццесс-Цонтрол-Аллоw-Хеадерс

Подршка за прегледаче[уреди | уреди извор]

ПРРИ је подржан од свих прегледача који користе следеће распоређивачке машине (у заградама су најниже подржане верзије):

Историја[уреди | уреди извор]

Подршка за преузимање ресурса са више домена је оригинално предложена Марта 2004. од стране Мета Ошрија (енгл. Matt Oshry), Бреда Портера (енгл. Brad Porter) и Мајкла Бодела (енгл. Michael Bodell) из компаније Теллме Нетwоркс као додатак стандарду ВоицеXМЛ 2.1[8] у циљу да омогући безбедан пренос података са више домена. Приметило се да се механизам може уопштити, односно да није уско повезан са ВоицеXМЛ-ом, те је издвојен у засебан пројекат, односно ,,имплементатион НОТЕ". Посебан део W3Ц-а који се назива задужен за развој софтвера за веб (енг. Тхе WебАппс Wоркинг Гроуп) заједно са развојним тимовима најпознатијих Веб прегледача је почео да формализује предложени пројекат у W3Ц радни нацрт (енгл. W3C Working Draf) који полако напредује ка томе да добије W3Ц препоруку (енгл. W3C Recommendation).

ПРРИ или ЈСОНП[уреди | уреди извор]

ПРРИ се може користити као модернија алтернатива за ЈСОНП узорак (енг. Јасон wитх паддинг). Док ЈСОНП подржава само ГЕТ метод за захтеве, ПРРИ подржава и друге типове ХТТП захтева. Коришћење ПРРИ-ја допушта програмеру за веб да користи обичне XМЛХттп захтеве (XМЛХттпРеqуест), који подржавају боље руковање грешкама од ЈСОНП-а. Са друге стране, ЈСОНП ради на старијим прегледачима који не подржавају ПРРИ. ПРРИ је подржан од већине модерних прегледача.

Види још[уреди | уреди извор]

Референце[уреди | уреди извор]

  1. ^ а б „цросс-сите xмлхттпреqуест wитх ЦОРС”. МОЗИЛЛА. Приступљено 5. 9. 2012. 
  2. ^ „ХТТП аццесс цонтрол (ЦОРС) - МДН”. Девелопер.мозилла.орг. Архивирано из оригинала 27. 05. 2010. г. Приступљено 5. 7. 2012. 
  3. ^ „Гецко - МДН”. Девелопер.мозилла.орг. 8. 6. 2012. Архивирано из оригинала 03. 08. 2012. г. Приступљено 5. 7. 2012. 
  4. ^ „Wхат макес Цамино Специал”. Приступљено 20. 2. 2013. 
  5. ^ „59940: Аппле Сафари WебКит Цросс-Оригин Ресоурце Схаринг Бyпасс”. Освдб.орг. Архивирано из оригинала 19. 07. 2012. г. Приступљено 5. 7. 2012. 
  6. ^ Тонy Росс; Програм Манагер; Интернет Еxплорер (9. 2. 2012). „ЦОРС фор XХР ин ИЕ10”. МСДН. Приступљено 14. 12. 2012. 
  7. ^ Давид Хоннеффер, Доцументатион Специалист (23. 4. 2012). „Опера Софтwаре: Wеб специфицатионс суппорт ин Опера Престо 2.10”. Опера.цом. Приступљено 5. 7. 2012. 
  8. ^ „Воице Еxтенсибле Маркуп Лангуаге (ВоицеXМЛ) 2.1”. W3.орг. 23. 3. 2004. Приступљено 5. 7. 2012. 

Спољашње везе[уреди | уреди извор]