XMLHttpRequest cross-domain kérések

Jellemzően egy XMLHttpRequest lehet lekérdezni csak a jelenlegi helyén. Amikor megpróbál egy másik domaint / port / protokoll - a böngésző hibát ad.

Van egy modern standard XMLHttpRequest. ő még vázlat állapotban, hanem olyan domainek kéréseket, és így tovább.

A legtöbb jellemzői a szabvány már minden böngésző támogatja, de sajnos, nem IE9-.

Ugyanakkor részben domainek kérelmek támogatott, mivel az IE8, hanem kell használni az XMLHttpRequest objektum XDomainRequest.

Nézzük a domainek közötti kérések a minta kódot:

  1. Elkészítjük az XMLHttpRequest és ellenőrizze, hogy ha támogatja a onload esemény. Ha nem, akkor egy régi XMLHttpRequest. akkor IE8,9, és használja XDomainRequest.
  2. Kérés érkezik egy másik domain egyszerűen meghatározza a megfelelő URL megnyitásához. Meg kell aszinkron, a többi - semmi különös.

Domainek lekérdezések különleges biztonsági ellenőrzés, amelynek célja -, hogy megakadályozzák a rosszindulatú hackerek ™ nyerni online.

Komolyan. szabványok fejlesztők figyelembe kell vennie az összes akadályt, hogy „rosszindulatú hacker” nem tudott, kihasználva az új szabvány, hogy tegyen valamit alapvetően eltér, és így is korábban, és így „break” minden szerver fut a régi szabvány és nem várnak semmi újat.

Nézzük, egy pillanatra képzeljük el, hogy van egy olyan szabvány, amely biztosítja, korlátozás nélkül, a képesség, hogy bármilyen HTTP-kérés oldalon, bárhol, mindenféle.

Hogyan lehet kihasználni egy gonosz hacker?

CORS leírás szab különleges korlátozások kéréseket, amelyek célja, hogy megakadályozzák ezt apokalipszis.

Lekérdezések benne lévő két csoportba sorolhatjuk.

Egyszerű lekérdezések esetén, amennyiben megfelelnek a következő két feltételnek:

  1. Egyszerű módszer. GET, POST vagy HEAD
  2. Egyszerű szalagcímek - csak a listából:
  • elfogad
  • Accept-Language
  • Content-Language
  • Content-Type érték application / x-www-form-urlencoded. multipart / form-data vagy text / plain.

„Nyugtalan” tekinteni az összes többit, például egy kérelmet a PUT módszerrel, vagy az engedélyezési fejléc nem alkalmas arra, hogy a fenti korlátozások.

A fő különbség a kettő között az, hogy egy „egyszerű” lekérdezés lehet létrehozni, és elküldi a szerver nélkül XMLHttpRequest, például HTML-formában.

De lekérdezések nem szabványos fejlécek vagy DELETE módszer tehát nem hoz létre. Ezért a régi szerver lehet nem áll készen a számukra. Vagy például, akkor feltételezhető, hogy az ilyen kéréseket a web oldalt, elvileg nem lehet elküldeni, akkor jött egy kiváltságos alkalmazások és ad nekik túl sok jogokat.

Ezért amikor „nehéz” kéri, akkor kell külön kérni a szerver, hogy ő elvileg egyetért egy ilyen domainek kérések, vagy nem? És, ha a szerver nem válaszol, aki egyetért azzal - akkor nem.

A CORS specifikáció, mint látni fogjuk, sok részből áll, de ezek mind egyesül egyetlen elv: új lehetőségek csak a kifejezett hozzájárulásával a szerver rendelkezésre állnak (alapértelmezés szerint - egy sem).

A cross-domain lekérdezés böngésző automatikusan hozzáadja az Origin fejlécet. tartalmazó domain, ahonnan a kérést Megvalósult.

A szerver a maga részéről, a választ bizonyos címeket, ha engedélyezi a kérelmet is.

XMLHttpRequest cross-domain kérések

Azaz, a válasz lehet valami ilyesmi:

Ha az Access-Control-Allow-Origin nincs jelen, akkor a böngésző úgy véli, hogy az engedélyt nem kapunk, és befejeződött a kérés egy hiba.

Mit tehet egy hacker az ilyen kéréseket?

fenti korlátokat vezet az a tény, hogy a kérelem teljesen biztonságos.

Valóban, a rossz oldalon generálhat GET / POST-kérést, és küldje el, de engedélye nélkül a szerver kap.

A IE9- használt XDomainRequest. amely díszítve XMLHttpRequest.

Rajta vannak korlátozások:

Modern szabvány XMLHttpRequest biztosít arra, hogy kiküszöböljük ezeket a korlátozásokat, de abban az időben az IE8, hogy még nem dolgozták ki, így azokat nem hajtják végre. A IE9 kijavítani néhány hibát, de általában nem hozzá semmi újat.

Ezért helyek, hogy szeretné fenntartani IE9-, a gyakorlatban a domainek közötti kérések ritkán használják, inkább más módszereket domainek kommunikáció. Például, a dinamikusan generált script tag vagy kisegítő IFRAME egy másik doménnel. Nézzük meg ezeket a módszereket a következő fejezetekben.

Hogyan teszi lehetővé a domainek kéréseit megbízható helyet IE9-?

Hagyjuk domainek lekérdezéseket „megbízható” hely lehet az IE beállításokat a „Biztonság” lapon, az elem „Hozzáférés az adatforrások domainek között”.

Általában ez történik a „Megbízható alkatrészek” terület, amely után lépett egy megbízható oldalon. Most megteheti domainek XMLHttpRequest kéréseket.

Ez a módszer is használható vállalati honlapok, valamint azokban az esetekben, amikor a látogató nyilvánvalóan bízik benned, de valamilyen oknál fogva (a munkahelyi számítógépen a rendszergazda tilos elhelyezni egy másik böngészőt?) Akarja használni az IE. Például, lehet, hogy felajánlott egy további útmutató „, hogyan lehet ezt a szolgáltatást munka mellett IE».

Az IE, lehetővé tette egy másik port

A domainek korlátozások vannak engedélyezve az IE port.

Ez lehetővé teszi, hogy megoldja néhány kapcsolatos problémákat a kölcsönhatás a különböző szolgáltatások egy oldalon. De csak az IE.

Speciális funkciók alább támogat minden modern böngésző kivételével IE9-.

Kapcsolódó cikkek