mozilla

Porównywanie wersji

Żądania XMLHttpRequest przesyłane między witrynami

Change Revisions

Wersja 282931:

Sprawdzenie wersji 282931 wykonane przez Flaneur

Wersja 226331:

Sprawdzenie wersji 226331 wykonane przez Flaneur

Tytuł:
Żądania XMLHttpRequest przesyłane między witrynami
Żądania XMLHttpRequest przesyłane między witrynami
Ciąg znaków:
Żądania_XMLHttpRequest_przesyłane_między_witrynami
Żądania_XMLHttpRequest_przesyłane_między_witrynami
Etykiety:
AJAX, DOM, Wszystkie_kategorie, Programowanie_WWW
Treść:

Revision 282931
Revision 226331
t7    <p>t
8      {{ Fx_minversion_note("3") }} Program <a href="pl/Firefox_3
>_dla_programist%c3%b3w">Firefox 3</a> jest zgodny z roboczą wersj 
>ą specyfikacji <a class="external" href="http://www.w3.org/TR/acc 
>ess-control/">W3C Access Control (Kontrola dostępu)</a>, która um 
>ożliwia przesyłanie żądań <a href="pl/XMLHttpRequest">XMLHttpRequ 
>est</a> między witrynami w różnych domenach (ang. <i>cross-site</ 
>i>). 
9    </p>
10    <h3 id="Om.C3.B3wienie" name="Om.C3.B3wienie">
11      Omówienie
12    </h3>
13    <p>
14      Mechanizmy <a class="external" href="http://www.w3.org/TR/a
>ccess-control/">kontroli dostępu</a> pozwalają na uzyskanie więks 
>zej kontroli nad dokumentami publikowanymi w sieci WWW dzięki moż 
>liwości określenia witryn, z których można uzyskać dostęp do tych 
> dokumentów za pomocą żądania wysyłanego przez przeglądarkę (taki 
>ego jak <a href="pl/XMLHttpRequest">XMLHttpRequest</a>). 
15    </p>
16    <p>
17      Ponadto ten schemat kontroli dostępu umożliwia wysyłanie pr
>zez aplikacje internetowe żądań skierowanych do witryn zewnętrzny 
>ch. Teoretycznie możliwe jest zatem przesłanie żądania dokumentu  
>z witryny google.com za pomocą obiektu XMLHttpRequest, działające 
>go na stronie z witryny twojastrona.pl (warunkiem jest zastosowan 
>ie omówionych poniżej mechanizmów kontroli dostępu). Twórcy witry 
>n internetowych dysponują w ten sposób większą elastycznością w z 
>akresie oferowania możliwości budowy serwisów „mashup” czy też ap 
>likacji korzystających z własnych danych użytkowników. 
18    </p>
19    <h3 id="Zastosowanie" name="Zastosowanie">
20      Zastosowanie
21    </h3>
22    <p>
23      W programie Firefox 3 istnieją dwie metody korzystania z me
>chanizmów <a class="external" href="http://www.w3.org/TR/access-c 
>ontrol/">kontroli dostępu</a>. Pierwszą z nich jest nowy nagłówek 
> HTTP Access-Control (stosowany do wszystkich typów zasobów; koni 
>eczny jest dość wysoki poziom kontroli nad serwerem WWW), natomia 
>st druga to instrukcje przetwarzania dotyczące kontroli dostępu ( 
>mające zastosowanie jedynie w przypadku dokumentów XML). 
24    </p>
25    <h4 id="Nag.C5.82.C3.B3wki_Access-Control" name="Nag.C5.82.C3
>.B3wki_Access-Control"> 
26      Nagłówki Access-Control
27    </h4>
28    <p>
29      Nagłówki są najbardziej elastycznym sposobem zezwalania na 
>żądania <a href="pl/XMLHttpRequest">XMLHttpRequest</a> przesyłane 
> przez witryny zewnętrzne. Jak pokazano w poniższym przykładzie,  
>po ustawieniu dodatkowych nagłówków Access-Control wysyłanych prz 
>ez serwer w odpowiedzi na żądania dostęp do żądanych danych będzi 
>e mogła uzyskać dowolna aplikacji z domeny mozilla.org. 
30    </p>
31    <pre class="eval">
32 Access-Control: allow &lt;mozilla.org&gt;
33</pre>
34    <p>
35      Nagłówek Access-Control umożliwia zezwolenie na dostęp do z
>asobu lub zabronienie dostępu na podstawie źródła żądania i metod 
>y, jakiej użyto do jego przesłania. 
36    </p>
37    <p>
38      Poniższy kod zawiera przykłady prawidłowych nagłówków Acces
>s-Control: 
39    </p>
40    <pre class="eval">
41 // Dostęp do zasobu mogą uzyskać wszyscy, bez ograniczeń
42 Access-Control: allow &lt;*&gt;
43 
44 // Dostęp do zasobu jest zabroniony dla wszystkich, bez wyjątków
45 Access-Control: deny &lt;*&gt;
46 
47 // Dostęp do zasobu można uzyskać wyłącznie z domeny 'mozilla.or
>g' 
48 // (włącznie z poddomenami)
49 Access-Control: allow &lt;mozilla.org&gt;
50 
51 // Dostęp do zasobu można uzyskać ze wszystkich poddomen domeny 
>'mozilla.org' 
52 // z wyjątkiem poddomeny developer.mozilla.org
53 Access-Control: allow &lt;mozilla.org&gt; exclude &lt;developer.
>mozilla.org&gt; 
54 
55 // Dostęp do zasobu można uzyskać wyłącznie z określonej domeny 
>oraz przy użyciu 
56 // określonego portu i określonej metody
57 Access-Control: allow &lt;developer.mozilla.org:80&gt; method GE
>T, POST 
58</pre>
59    <p>
60      Więcej przykładowych poleceń można znaleźć w <a class="exte
>rnal" href="http://www.w3.org/TR/access-control/#access-control0" 
>>roboczej wersji specyfikacji W3C Access Control</a>. 
61    </p>
62    <h5 id="Przyk.C5.82ad" name="Przyk.C5.82ad">
63      Przykład
64    </h5>
65    <p>
66      W tym prostym przykładzie zewnętrzna witryna WWW wysyła żąd
>anie pliku HTML. Plik ten jest generowany przez skrypt PHP, wysył 
>ający dodatkowy nagłówek Access-Control. Po skopiowaniu pliku hea 
>der.html na własny serwer zauważysz, że żądanie jest nadal obsług 
>iwane poprawnie — zezwolenie na jego wysłanie zostało bowiem udzi 
>elone wszystkim witrynom. 
67    </p>
68    <p>
69      <b><a class="external" href="http://ejohn.org/apps/xdomain/
>header.html">header.html</a></b> 
70    </p>
71    <pre class="eval">
72 &lt;html&gt;
73 &lt;head&gt;
74 &lt;script&gt;
75 window.onload = function(){
76   var xhr = new XMLHttpRequest();
77   xhr.open("GET", <span class="nowiki">"http://dev.jquery.com/~j
>ohn/xdomain/test.php"</span>, true); 
78   xhr.onreadystatechange = function(){
79     if ( xhr.readyState == 4 ) {
80       if ( xhr.status == 200 ) {
81         document.body.innerHTML = "Nazywam się: " + xhr.response
>Text; 
82       } else {
83         document.body.innerHTML = "BŁĄD";
84       }
85     }
86   };
87   xhr.send(null);
88 };
89 &lt;/script&gt;
90 &lt;/head&gt;
91 &lt;body&gt;
92 Trwa ładowanie...
93 &lt;/body&gt;
94 &lt;/html&gt;
95</pre>
96    <p>
97      <b><a class="external" href="http://dev.jquery.com/~john/xd
>omain/test.php">test.php</a></b> 
98    </p>
99    <pre class="eval">
100 &lt;!-- Aby udostępnić ten dokument dla swojej witryny, zamień &
>lt;ejohn.org&gt; na adres swojej domeny  
101 (np. &lt;twojadomena.pl&gt;); aby zezwolić na dostęp WSZYSTKIM d
>omenom, wpisz &lt;*&gt;. --&gt; 
102 &lt;?php header('Access-Control: allow &lt;ejohn.org&gt;'); ?&gt
>; 
103 &lt;b&gt;John Resig&lt;/b&gt;
104</pre>
105    <h4 id="Instrukcje_przetwarzania_kodu_XML" name="Instrukcje_p
>rzetwarzania_kodu_XML"> 
106      Instrukcje przetwarzania kodu XML
107    </h4>
108    <p>
109      Możliwe jest dołączenie do kodu XML dodatkowych poleceń, kt
>óre definiują sposób obsługi dokumentu przez parser XML. W wersji 
> roboczej specyfikacji Access Control określono jedno z tych pole 
>ceń, umożliwiające zdalny dostęp do danego dokumentu XML z witryn 
> zewnętrznych. 
110    </p>
111    <p>
112      Na przykład umieszczenie w dokumencie XML następującej inst
>rukcji przetwarzania pozwoli wszystkim witrynom z domeny mozilla. 
>org na dostęp do tego dokumentu: 
113    </p>
114    <pre class="eval">
115 &lt;?access-control allow="mozilla.org"?&gt;
116</pre>
117    <p>
118      Poniżej podano kilka przykładów zastosowania instrukcji prz
>etwarzania, służących do przyznania uprawnień dostępu do dokument 
>u XML: 
119    </p>
120    <pre class="eval">
121 // Dostęp do zasobu mogą uzyskać wszyscy, bez ograniczeń
122 &lt;?access-control allow="*"?&gt;
123 
124 // Dostęp do zasobu jest zabroniony dla wszystkich, bez wyjątków
125 &lt;?access-control deny="*"?&gt;
126 
127 // Dostęp do zasobu można uzyskać wyłącznie z domeny 'mozilla.or
>g' 
128 // (włącznie z poddomenami)
129 &lt;?access-control deny="mozilla.org"?&gt;
130 
131 // Dostęp do zasobu można uzyskać ze wszystkich poddomen domeny 
>'mozilla.org' 
132 // z wyjątkiem poddomeny developer.mozilla.org
133 &lt;?access-control allow="mozilla.org" exclude="developer.mozil
>la.org"?&gt; 
134 
135 // Dostęp do zasobu można uzyskać wyłącznie z określonej domeny 
>oraz przy użyciu 
136 // określonego portu i określonej metody
137 &lt;?access-control allow="developer.mozilla.org" method="GET PO
>ST"?&gt; 
138</pre>
139    <p>
140      Więcej przykładowych poleceń można znaleźć w <a class="exte
>rnal" href="http://www.w3.org/TR/access-control/#access-control0" 
>>roboczej wersji specyfikacji W3C Access Control</a>. 
141    </p>
142    <h5 id="Przyk.C5.82ad_2" name="Przyk.C5.82ad_2">
143      Przykład
144    </h5>
145    <p>
146      W tym prostym przykładzie zewnętrzna witryna WWW wysyła żąd
>anie pliku XML. Plik ten zawiera instrukcje przetwarzania, które  
>pozwalają na dostęp do dokumentu wszystkim witrynom. Po skopiowan 
>iu pliku ac.html na własny serwer zauważysz, że żądanie jest nada 
>l obsługiwane poprawnie — zezwolenie na jego wysłanie zostało bow 
>iem udzielone wszystkim witrynom. 
147    </p>
148    <p>
149      <b><a class="external" href="http://ejohn.org/apps/xdomain/
>ac.html">ac.html</a></b> 
150    </p>
151    <pre class="eval">
152 &lt;html&gt;
153 &lt;head&gt;
154 &lt;script&gt;
155 window.onload = function(){
156   var xhr = new XMLHttpRequest();
157   xhr.open("GET", <span class="nowiki">"http://dev.jquery.com/~j
>ohn/xdomain/test.xml"</span>, true); 
158   xhr.onreadystatechange = function(){
159     if ( xhr.readyState == 4 ) {
160       if ( xhr.status == 200 ) {
161         document.body.innerHTML = "Nazywam się: " +
162           xhr.responseXML.getElementsByTagName("name")[0].firstC
>hild.nodeValue; 
163       } else {
164         document.body.innerHTML = "BŁĄD";
165       }
166     }
167   };
168   xhr.send(null);
169 };
170 &lt;/script&gt;
171 &lt;/head&gt;
172 &lt;body&gt;
173 Loading...
174 &lt;/body&gt;
175 &lt;/html&gt;
176</pre>
177    <p>
178      <b><a class="external" href="http://dev.jquery.com/~john/xd
>omain/test.xml">test.xml</a></b> 
179    </p>
180    <pre class="eval">
181 &lt;!-- Aby udostępnić ten dokument dla swojej witryny, zamień a
>trybut allow="ejohn.org" na adres swojej domeny  
182 (np. allow="twojadomena.pl"); aby zezwolić na dostęp WSZYSTKIM d
>omenom, wpisz allow="*". --&gt; 
183 &lt;?xml version="1.0" encoding="UTF-8"?&gt;
184 &lt;?access-control allow="ejohn.org"?&gt;
185 &lt;simple&gt;&lt;name&gt;John Resig&lt;/name&gt;&lt;/simple&gt;
186</pre>
187    <h3 id="Odno.C5.9Bniki" name="Odno.C5.9Bniki">
188      Odnośniki
189    </h3>
190    <ul>
191      <li>
192        <a class="external" href="http://www.w3.org/TR/access-con
>trol/">Specyfikacja W3C Access Control, wersja robocza</a> 
193      </li>
194      <li>
195        <a class="link-https" href="https://bugzilla.mozilla.org/
>show_bug.cgi?id=389508">Błąd dotyczący implementacji obsługi żąda 
>nia XMLHttpRequest przesyłanego między witrynami</a> 
196      </li>
197    </ul>
198    <h3 id="Zobacz_tak.C5.BCe" name="Zobacz_tak.C5.BCe">
199      Zobacz także
200    </h3>
201    <ul>
202      <li>
203        <code><a href="pl/XMLHttpRequest">XMLHttpRequest</a></cod
>e> 
204      </li>
205    </ul>
206    <p>
207      <br>
208    </p>
209    <p>
210      <br>
211    </p>
212    <p>
213      <br>
214    </p>
215    <div class="noinclude"></div>{{ languages( { "en": "en/Cross-
>Site_XMLHttpRequest", "fr": "fr/Requ\u00eates_XMLHttpRequest_inte 
>r-sites", "ja": "ja/Cross-Site_XMLHttpRequest", "zh-tw": "zh_tw/C 
>ross-site_XMLHttpRequest" } ) }} 

Wróć do historii