dimecres, de desembre 22, 2010

Permetre crides AJAX des d'un domini diferent (Peticions "Cross-site")

El servidor específica en la resposta HTTP a quins dominis permet efectuar consultes (si és que n'hi ha algun més que el propi d'on es troba allotjat) mitjançant la capçalera "Access-Control-Allow-Origin"

Així doncs si la crida AJAX va cap a un recurs PHP que es trobi en un domini diferent es pot fer si modifiquem l'script PHP perquè retorni una capçalera "Access-Control-Allow-Origin" adequada:

header('Access-Control-Allow-Origin: http://domini_desdonhiha_el_javascript_amb_ajax.com');

o fins i tot per permetre qualsevol origen:

header('Access-Control-Allow-Origin: "*"');


D'altre banda si no es tracta d'un PHP o no ho podem modificar les capçaleres HTTP
per la raó que sigui, l'Apache es pot configurar mitjançant directiva o mitjançant un arxius .httacces per afegir-la, en aquest darrer cas la directiva podria ser:

header add Access-Control-Allow-Origin *

Cal tenir el mòdul "mod_headers" d'apache carregat perquè funcionin aquestes directives. En Debian/Ubuntu seria assegurant-nos que a "/etc/apache2/mods-enabled" existeix el headers.load ( i si no és així enllaçant-li des dels mods-available amb un "ln -s /etc/apache2/mods-available/headers.load /etc/apache2/mods-enabled/headers.load")

Un exemple d'afegir la capçaera mitjançant la directiva a l'arxiu de configuració seria afegir
Header set Access-Control-Allow-Origin "*" a l'arxiu de configuració del lloc web, per exemple dins de la secció que ens interessi. En aquest cas, per què Apache agafi els canvis de configuració caldria reiniciar-lo
sudo /etc/init.d/apache2 reload



1 comentari:

magnesnaden ha dit...

Alternatively, ought to use|you have to use} the code “LASATLANTIS”, and with each of your first 5 deposits, you’ll qualify for a 280% slots bonus value as much as} $14,000. We discovered eleven different bonus provides that give away as much as} one hundred seventy free spins and $14,000 in on line casino credit. All stated, Red Dog delivers a lag-free and gratifying cellular gaming experience. Use the bonus code “NEWBANDITS” along with your first deposit of $10 or extra, and you’ll receive a 200% match bonus that may pay as much as} 30x your authentic deposit. If you’re looking for a dedicated, portable, and https://www.casino-roll.com/ game-filled cellular on line casino, Red Dog could be the proper match for you.