In realtà ho scritto questo codice.
Quando si tenta di eseguire la cometa cross-sottodomain / port, l'iframe deve avere lo stesso document.domain
valore del frame principale. Sfortunatamente, il browser memorizza internamente il nome di dominio E la porta per il document.domain
valore originale . Ma il getter e il setter in javascript non sanno nulla della porta. Quindi il problema è questo: se lo document.domain
è il frame superiore ('example.com', 80)
e lo è il frame inferiore ('comet.example.com', 80)
, come si fa a fare in modo che sia anche il frame inferiore ('example.com', 80)
?
Non è possibile, poiché la modifica della parte del nome host causerà necessariamente l'impostazione della porta null
, quindi il meglio che puoi fare è ('example.com', null)
nel frame inferiore. Quindi anche il frame superiore deve essere impostato su quel valore e l'impostazione document.domain=document.domain
fa proprio questo. Cambia la rappresentazione interna nel browser da ('example.com', 80)
a, ('example.com', null)
quindi tutto corrisponde e la comunicazione del frame cross-port / sottodominio funziona.