2011-01-23 10 views
7

Ho bisogno di conoscere la differenza tra CURL (in PHP) e AJAX (in Javascript) quando si tratta di conoscere la fonte della richiesta.AJAX contro CURL

AGGIORNAMENTO: Quello che voglio sapere è se sto generando richieste utilizzando AJAX quale indirizzo IP del mittente sarebbe pervenuta in lato server con il pacchetto come fonte? Lo stesso è con CURL e per tutti gli utenti sarà inviato un indirizzo IP singolo. Ma è lo stesso caso di JS? JS viene eseguito sul lato client, quindi sarebbe l'indirizzo IP del client?

+0

Può essere un duplicato di http://stackoverflow.com/questions/4738380/what-differences-are-there-between-form-submissions-and-curl-requests – arnaud576875

+0

No, non lo è. Devo conoscere l'origine della richiesta quando è CURL o AJAX – Neutralizer

risposta

14

cURL è un processo lato server. Ciò significa che verrà chiamato prima che la pagina venga resa e non abbia nulla a che fare con le capacità del client.

AJAX, tuttavia, è una chiamata sul lato client. questo significa che non sarà eseguito fino al il client carica la pagina (o almeno quel pezzo di codice è visto ed eseguito, ma questo è tipicamente su document.ready).

Se stai cercando di recuperare le informazioni e inviarle all'utente immediatamente, allora cURL è la soluzione migliore. Se si desidera eseguire un caricamento progressivo (eseguire il dump della pagina, quindi recuperare il contenuto per un carico "seamless" per l'utente), AJAX è la soluzione migliore. Tenete a mente per tutto il tempo, sebbene al giorno d'oggi sia semi-banale, AJAX potrebbe non essere sempre supportato (o disabilitato nei casi del plug-in NoScript di FireFox).

Detto questo, l'origine dell'esecuzione di cURL sarà sul server. L'origine della richiesta AJAX sarà basata su un singolo client. Nessuno dei due fornisce un mezzo di rilevamento sicuro (lato server) per sapere chi ha inviato cosa (come le intestazioni possono essere modificate).

0

Se si sta tentando di rilevare quale metodo è stato utilizzato come origine di una richiesta, non c'è modo di saperlo con certezza. La maggior parte dei browser utilizza l'intestazione HTTP X-Requested-With quando invia una richiesta tramite AJAX. La libreria cURL invia un agente utente per impostazione predefinita, ma questo può ovviamente essere modificato dalla libreria. Entrambi i metodi possono essere falsificati facilmente e non devono essere utilizzati per una convalida rigorosa.

Edit:

La richiesta AJAX verrà da client che ha effettuato la richiesta AJAX. La richiesta cURL verrà da dove è stata utilizzata la libreria. (ad esempio se stai usando PHP, verrà dal server PHP. Se lo stai usando tramite CLI, verrà dal server da cui hai eseguito il comando)

Ovviamente le richieste potrebbero essere dietro a proxy , ecc.

0

L'indirizzo IP che ha richiesto il file javascript dal server sarà lo stesso dell'indirizzo IP che ha generato la richiesta ajax sul server da quel file. Vedi lo same origin policy.

+0

In base a ciò, se creo una pagina Web che attiverà la richiesta AJAX per dire alcuni www.nnn.com, qualsiasi utente che utilizza la mia pagina web attiverà questa richiesta dal suo IP . destra? – Neutralizer

+1

Sì, questo è quello che abbiamo detto sia io che Brad. Nota: AJAX è limitato dalla stessa politica di origine: non è possibile effettuare una richiesta AJAX su un dominio diverso da quello della richiesta. – William