Skip to content

Commit 58c3bca

Browse files
author
Andrea Longo
committed
fix typos
1 parent 63fb735 commit 58c3bca

File tree

1 file changed

+21
-21
lines changed
  • 3-frames-and-windows/03-cross-window-communication

1 file changed

+21
-21
lines changed

3-frames-and-windows/03-cross-window-communication/article.md

Lines changed: 21 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
# Comuniaczione cross-window
22

3-
La politcia di "Same Origin" ("stessa origine", ovvero stesso sito) limita il reciproco accesso tra finestre ed iframe diversi.
3+
La politica di "Same Origin" ("stessa origine", ovvero stesso sito) limita il reciproco accesso tra finestre ed iframe diversi.
44

5-
L'idea è che, se un utente ha deu pagine aperte: una su `john-smith.com`, ed un'altra su `gmail.com`, allora non vorrà che uno script ion esecuzione su `john-smith.com` possa leggere tutte le sue mail dalla finestra di `gmail.com`. Quindi, lo scopo della politica "Same Origin" è quello di proteggere l'utente dal furto di informazioni.
5+
L'idea è che, se un utente ha due pagine aperte: una su `john-smith.com`, ed un'altra su `gmail.com`, allora non vorrà che uno script in esecuzione su `john-smith.com` possa leggere tutte le sue mail dalla finestra di `gmail.com`. Quindi, lo scopo della politica "Same Origin" è quello di proteggere l'utente dal furto di informazioni.
66

77
## Same Origin [#same-origin]
88

@@ -24,18 +24,18 @@ Questi invece no:
2424
La politica di "Same Origin" afferma che:
2525

2626
- se abbiamo un riferimento ad un'altra finestra, ad esempio un popup creato tramite `window.open` oppure una finestra all'interno di un `<iframe>`, e queste finestre appartengono alla stessa origine, allora avremo pieno accesso ad esse.
27-
- altrimenti, se queste provengono da origini differenti, allora non potremo accedere al cotenuto della finestra: variables, il suo document, e qualsiasi altra informazione. L'unica eccezione è sulla proprietà `location`: possiamo modificarla (reindirizzando l'utente). Ma non possiamo *leggerne* il contenuto (quindi non possiamo sapere in quale sito si trova l'utente in un dato momento, nessuna infromazione viene trapelata).
27+
- altrimenti, se queste provengono da origini differenti, allora non potremo accedere al contenuto della finestra: variabili, il suo document, e qualsiasi altra informazione. L'unica eccezione è sulla proprietà `location`: possiamo modificarla (reindirizzando l'utente). Ma non possiamo *leggerne* il contenuto (quindi non possiamo sapere in quale sito si trova l'utente in un dato momento, nessuna infromazione viene trapelata).
2828

2929
### In azione: iframe
3030

3131
Un tag di `<iframe>` permette di incorporare una finestra separata, la quale avrà i suoi oggetti `document` e `window` separati.
3232

3333
Possiamo accedervi utilizzando le proprietà:
3434

35-
- `iframe.contentWindow` per ottenere il riferiemnto alla finestra all'interno di `<iframe>`.
35+
- `iframe.contentWindow` per ottenere il riferimento alla finestra all'interno di `<iframe>`.
3636
- `iframe.contentDocument` per ottenere il riferimento al document all'interno di `<iframe>`, abbreviazione per `iframe.contentWindow.document`.
3737

38-
Quando accediamo a qualche proprietà della finestra incorporata, il browser verificherà se l'iframe appartiene alla stessa origine. Se cosi non è, allora l'accesso verrà negatp (rimane l'eccezione sulla scrittura di `location`, che è comunque permessa).
38+
Quando accediamo a qualche proprietà della finestra incorporata, il browser verificherà se l'iframe appartiene alla stessa origine. Se cosi non è, allora l'accesso verrà negato (rimane l'eccezione sulla scrittura di `location`, che è comunque permessa).
3939

4040
Ad esempio, proviamo a leggere e scrivere su un `<iframe>` da un'altra origine:
4141

@@ -44,7 +44,7 @@ Ad esempio, proviamo a leggere e scrivere su un `<iframe>` da un'altra origine:
4444

4545
<script>
4646
iframe.onload = function() {
47-
// possiamo ottenere il riferiemento alla finestra integrata
47+
// possiamo ottenere il riferimento alla finestra integrata
4848
*!*
4949
let iframeWindow = iframe.contentWindow; // OK
5050
*/!*
@@ -106,7 +106,7 @@ L'evento di `iframe.onload` (nel tag `<iframe>`) equivale a `iframe.contentWindo
106106
107107
Per definizione, due URL con domini differenti appartengono ad origini differenti.
108108
109-
Ma se le due finestre condividono lo stesso dominio di secondo livello, ad esempio `john.site.com`, `peter.site.com` e `site.com` (il loro dominio di secondo livello comunue è `site.com`), possiamo far si che il browser ignori la differenza, in questo modo verrannop trattate come se provenissero dalla "stessa origine", per gli scopi della comunicazione tra finestre.
109+
Ma se le due finestre condividono lo stesso dominio di secondo livello, ad esempio `john.site.com`, `peter.site.com` e `site.com` (il loro dominio di secondo livello comune è `site.com`), possiamo far si che il browser ignori la differenza, in questo modo verranno trattate come se provenissero dalla "stessa origine", per gli scopi della comunicazione tra finestre.
110110
111111
Per far si che questo funzioni, ogni finestra dovrà eseguire il seguente codice:
112112
@@ -118,9 +118,9 @@ Questo è tutto. Da questo momento in poi potranno interagire senza limitazioni.
118118

119119
## Iframe: il tranello del document errato
120120

121-
Quando un iframe appartine alla stessa origine, con la possibilità quindi di accere al suo `document`, c'è un piccolo tranello a cui prestare attenzione. Non è strettamente legato al cross-origin, ma è comunque importante esserne a consocenza.
121+
Quando un iframe appartiene alla stessa origine, con la possibilità quindi di accedere al suo `document`, c'è un piccolo tranello a cui prestare attenzione. Non è strettamente legato al cross-origin, ma è comunque importante esserne a conoscenza.
122122

123-
Al momento della creazione, un iframe genera immediatamente un docuement. Ma quest utlimo è diverso da quello che verrà caricato internamente!
123+
Al momento della creazione, un iframe genera immediatamente un document. Ma quest ultimo è diverso da quello che verrà caricato internamente!
124124

125125
Quindi, se qualsiasi operazione effettuata sul document negli istanti dopo al creazione, andrà probabilmente persa.
126126

@@ -146,7 +146,7 @@ Dovremmo evitare di effettuare operazioni sul document di un iframe non ancora c
146146

147147
Come possiamo assicurarci che il document sia quello corretto?
148148

149-
Per essere sicuri di lavorare con il document corretto, dovremmo attendere fin quando verrà emesso l'evento `iframe.onload`. Il quale verrà innescato solemente una volta che l'iframe avrà caricato tutte le risorse.
149+
Per essere sicuri di lavorare con il document corretto, dovremmo attendere fin quando verrà emesso l'evento `iframe.onload`. Il quale verrà innescato solamente una volta che l'iframe avrà caricato tutte le risorse.
150150

151151
Possiamo provare ad intercettarlo anticipatamente effettuando controlli all'interno di un `setInterval`:
152152

@@ -170,10 +170,10 @@ Possiamo provare ad intercettarlo anticipatamente effettuando controlli all'inte
170170

171171
## Collection: window.frames
172172

173-
Un modo alternativo per ottenere l'oggetto realtivo ad una finestra di `<iframe>`, è quello di accedervi tramite la collection `window.frames`:
173+
Un modo alternativo per ottenere l'oggetto relativo ad una finestra di `<iframe>`, è quello di accedervi tramite la collection `window.frames`:
174174

175175
- Tramite indice: `window.frames[0]`: l'oggetto relativo alla prima finestra di iframe nel document.
176-
- By name: `window.frames.iframeName`: l'oggetto realtivo all'iframew con `name="iframeName"`.
176+
- By name: `window.frames.iframeName`: l'oggetto relativo all'iframew con `name="iframeName"`.
177177

178178
Ad esempio:
179179

@@ -192,7 +192,7 @@ E' possibile navigare tra le finestre della gerarchia utilizzando:
192192

193193
- `window.frames`: la collezione delle finestre "figlie" (per iframe annidati).
194194
- `window.parent`: il riferimento alla finestra "padre" (quella esterna).
195-
- `window.top`: il riferiemento alla finestra in cima alla gerarchia.
195+
- `window.top`: il riferimento alla finestra in cima alla gerarchia.
196196

197197
Ad esempio:
198198

@@ -214,14 +214,14 @@ if (window == top) { // window == window.top?
214214

215215
L'attributo `sandbox` permette l'esclusione di determinate azioni all'interno di un `<iframe>`, in modo da prevenire l'esecuzione di codice non affidabile. Consente di "isolare" ("sandbox") l'iframe, facendo si che venga trattato come se appartenesse ad un origine diversa e/o applicando altre limitazioni.
216216

217-
Ci sono una serie di restriozioni "applicate di default" per un `<iframe sandbox src="...">`. Ma possono essere disattivate esplicitamente fornendo, come valore dell'attributo, la lista delle restrizioni da non applicare separate da un carettere di spazio, in questo modo: `<iframe sandbox="allow-forms allow-popups">`.
217+
Ci sono una serie di restrizioni "applicate di default" per un `<iframe sandbox src="...">`. Ma possono essere disattivate esplicitamente fornendo, come valore dell'attributo, la lista delle restrizioni da non applicare separate da un carattere di spazio, in questo modo: `<iframe sandbox="allow-forms allow-popups">`.
218218

219219
In altre parole, un attributo `"sandbox"` vuoto, applica tutte le restrizioni, ma possiamo fornirgli la lista di quelle che vogliamo disattivare, separandole con uno spazio.
220220

221221
Di seguito la lista delle limitazioni:
222222

223223
`allow-same-origin`
224-
: Di default l'attributo `"sandbox"` forza la politica di "diversa origine" per un iframe. In altre parole, fa si che il browser trati l'`iframe` come se appartenesse ad un origine diversa, anche se in realtà il suo `src` sta puntando allo stesso sito. Con tutte le relative implicazioni viste prima. Questa opzione, disabilita la restrizione.
224+
: Di default l'attributo `"sandbox"` forza la politica di "diversa origine" per un iframe. In altre parole, fa si che il browser tratti l'`iframe` come se appartenesse ad un origine diversa, anche se in realtà il suo `src` sta puntando allo stesso sito. Con tutte le relative implicazioni viste prima. Questa opzione, disabilita la restrizione.
225225

226226
`allow-top-navigation`
227227
: Permette all'iframe` di cambiare `parent.location`.
@@ -233,7 +233,7 @@ Di seguito la lista delle limitazioni:
233233
: Permette l'esecuzione di script dall'`iframe`.
234234

235235
`allow-popups`
236-
: Permette all'`iframe` l'apertura di finestre di poopup tramite `window.open`
236+
: Permette all'`iframe` l'apertura di finestre di popup tramite `window.open`
237237

238238
Consulta [il manuale](mdn:/HTML/Element/iframe) per maggiori informazioni.
239239

@@ -252,7 +252,7 @@ Lo scopo dell'attributo `"sandbox"` è solamente quello di *aggiungere più* res
252252

253253
L'interfaccia `postMessage` permette alle finestre di comunicare indistintamente dall'origine di appartenenza.
254254

255-
Quindi, è di fatto un modo per aggirare la politica di "Same Origin". Consente infatti ad una finestra proveniente da `john-smith.com` di comunicare con `gmail.com` e scambiarsi informazioni, ma solamente nel caso in cui entrambe acconsentono questo comportamento ed invocano le rispettive funzoni JavaScript. Questo rende il meccaniscmo di comunicazione tra finestre sicuro per l'utente.
255+
Quindi, è di fatto un modo per aggirare la politica di "Same Origin". Consente infatti ad una finestra proveniente da `john-smith.com` di comunicare con `gmail.com` e scambiarsi informazioni, ma solamente nel caso in cui entrambe acconsentono questo comportamento ed invocano le rispettive funzioni JavaScript. Questo rende il meccaniscmo di comunicazione tra finestre sicuro per l'utente.
256256

257257
L'interfaccia è composta da due parti.
258258

@@ -263,7 +263,7 @@ La finestra che vuole inviare un messaggio invoca il metodo [postMessage](mdn:ap
263263
Argomenti:
264264

265265
`data`
266-
: I dati da inviare. Possono essere un qualsiasi oggetto, che verrà poi duplicato utilizzando "l'algorito di serializzazione strutturato". IE supporta solamente stringhe, quindi dovremo utilizzare `JSON.stringify` per supportarlo.
266+
: I dati da inviare. Possono essere un qualsiasi oggetto, che verrà poi duplicato utilizzando "l'algoritmo di serializzazione strutturato". IE supporta solamente stringhe, quindi dovremo utilizzare `JSON.stringify` per supportarlo.
267267

268268
`targetOrigin`
269269
: Specifica l'origine per al finestra target, in questo modo il messaggio verrà ricevuto solamente dalla giusta finestra.
@@ -337,7 +337,7 @@ Ecco l'esempio completo:
337337

338338
## Riepilogo
339339

340-
Per poter invocare metodi ed accedere al contenuto di un'altra finestra, dobbiamo come prima cosa ottenere un riferimeto ad essa.
340+
Per poter invocare metodi ed accedere al contenuto di un'altra finestra, dobbiamo come prima cosa ottenere un riferimento ad essa.
341341

342342
Per le finestre di popup abbiamo i seguenti riferimenti:
343343
- Dalla finestra che innesca l'apertura: `window.open`, consente di aprire una nuova finestra e ne ritorna il riferimento,
@@ -355,7 +355,7 @@ Altrimenti, le uniche azioni possibili saranno:
355355
- Inviare un messaggio.
356356

357357
Le uniche eccezioni sono:
358-
- Finestere che condividono lo stesso dominio di secondo livello: `a.site.com` e `b.site.com`. E che abbiamo entrambe impostato: `document.domain='site.com'`. In questo caso verranno intepretate come appartenenti alla stessa origine.
358+
- Finestre che condividono lo stesso dominio di secondo livello: `a.site.com` e `b.site.com`. E che abbiamo entrambe impostato: `document.domain='site.com'`. In questo caso verranno interpretate come appartenenti alla stessa origine.
359359
- Se un iframe possiede l'attributo `sandbox`, allora questo verrà forzato ad uno stato di "origine differente", a meno che non venga esplicitamente disattivato passando come valore dell'attributo `allow-same-origin`. In questo caso verrà permessa l'esecuzione di codice esterno all'interno dell'iframe (se appartengono alla stessa origine).
360360

361361
L'interfaccia `postMessage` consente a due finestre, qualsiasi sia la loro origine, di comunicare:
@@ -367,6 +367,6 @@ L'interfaccia `postMessage` consente a due finestre, qualsiasi sia la loro origi
367367
- `source`: il riferimento alla finestra mittente.
368368
- `data`: i dati inviati, sono supportati tutti i tipi di oggetto, ad eccezione di IE che accetta solamente stringhe.
369369

370-
Dobbiamo utilizzare `addEventListener` all'interno delle finestra targer, per impostare il gestore dell'evento.
370+
Dobbiamo utilizzare `addEventListener` all'interno delle finestra target, per impostare il gestore dell'evento.
371371

372372

0 commit comments

Comments
 (0)