Domanda

Come aggirare questo problema di scripting cross-site Ajax su FireFox 3?

È stato utile?

Soluzione

Se stai utilizzando jQuery ha una funzione di callback per superare questo problema:

http://docs.jquery.com/Ajax/jQuery.ajax#options

A partire da JQuery 1.2, è possibile caricare i dati JSON situati su un altro dominio se si specifica un callback JSONP, che può essere fatto così:"miourl?callback=?".jQuery sostituisce automaticamente il ?Con il nome del metodo corretto da chiamare, chiamando il callback specificato.Oppure, se si imposta il tipo di dati su "JSONP", un callback verrà automaticamente aggiunto alla tua richiesta AJAX.

In alternativa puoi effettuare la tua richiesta Ajax a uno script lato server che esegue la chiamata interdominio per te, quindi restituisce i dati al tuo script

Altri suggerimenti

Per aggiornare la risposta (immagino, soprattutto a mio vantaggio quando cercherò questa risposta più tardi), se stai caricando XML o qualcos'altro, puoi sempre chiedere all'utente se ci consentirà di leggere da un altro sito con questo codice :

try {
    if (netscape.security.PrivilegeManager.enablePrivilege)
        netscape.security.PrivilegeManager.enablePrivilege("UniversalBrowserRead");
} catch (e) { 
    alert("Sorry, browser security settings won't let this program run."); 
    return; 
}

(dal libro sui servizi web RESTful) Ma funziona solo in Firefox, quando il file html viene caricato dal file locale.Quindi, non così utile.

Un'altra soluzione:se tutto ciò di cui hai bisogno sono le intestazioni, puoi specificare "HEAD" come metodo e non attiverà il problema di sicurezza.Ad esempio, se vuoi solo sapere se la pagina web esiste.

var client = new XMLHttpRequest();
client.open("HEAD", my_url, false);
client.send(null);
if(client.readyState != 4 || client.status != 200) //if we failed
    alert("can't open web page");

Sarebbe carino qualche dettaglio in più:quale libreria AJAX stai utilizzando, cosa vorresti ottenere, come lo fai.

Ad esempio può trattarsi di una richiesta Ajax tra domini, che non è consentita.In questo caso utilizzare JSON.

Mi sono imbattuto in questo problema di recente ed è stato mentre caricavo la richiesta locale come AJAX, non un problema di scripting tra siti.Inoltre, lo stesso Jimmy sembra avere lo stesso problema.Questo sembra essere il problema di sicurezza di FF, questo articolo lo descrive causa e soluzione per l'accesso al codice URI negato" limitato:"Problema 1012.

Spiacenti, ho ricevuto quell'errore usando JQuery $ .Ajax su Firefox 3.Ho provato il suggerimento JSONP ma penso che funzionerà solo con qualcosa che servirà JSON.Sto cercando di creare un mashup basato su file HTML locale di esempio che tirerà i dati da Yahoo! Finance, ma stanno servendo .csv, quindi penso di essere sol.– Jimmy Chandra (9 settembre alle 17:20)

Spero che lo troverai utile.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top