2008-10-16 8 views
5

Estoy trabajando en una intranet con varios subdominios. Tengo control sobre cada subdominio, por lo que la seguridad de las solicitudes entre sitios no es una preocupación. Tengo scripts PHP con respuestas JSON que me gustaría llamar desde múltiples subdominios sin duplicación. Para las solicitudes GET, puedo hacer esto con AJAX y JSONP, pero eso no funciona con las solicitudes POST. Algunas alternativas que veo, ninguno de los cuales parecen muy buena:¿Mejores prácticas para obtener respuestas JSON entre sitios para POST?

  • POST a una copia en subdominio local con mínima respuesta, a continuación, obtener la respuesta completa de la ubicación central con JSONP
  • Tanto POST y GET a una copia en local de subdominio con JSON
  • uso mod_rewrite para utilizar URLs locales con un guión central sobre el extremo trasero con JSON
  • use los enlaces simbólicos a utilizar URLs locales con un guión central sobre el extremo trasero con JSON

Am extraño ing algo más simple? ¿Qué harías aquí?

Respuesta

0

Uso el método REST en tales casos. Busque en google para obtener más información acerca de REST.

+0

Sí, hacer REST es la solución más sensata. –

+0

Estoy familiarizado con REST, pero no veo cómo eso soluciona mi problema. No puedo enviar una solicitud POST entre dominios utilizando REST más de lo que puedo sin, ¿o sí? –

2

Puede escribir un reflector simple en el lado del servidor. Agregue una secuencia de comandos a cada dominio que simplemente pase su solicitud de Ajax al dominio apropiado. Este script puede ser muy simple (1 o 2 líneas de código), evita los problemas de secuencias de comandos entre sitios y significa que no necesita duplicar la complicada lógica de negocios en los scripts existentes.

Causará trabajo adicional para su servidor, pero eso puede no ser un problema para usted.

El código de ejemplo más cercano que puedo encontrar en los sitios que administro es el siguiente. Aquí necesitábamos poder usar la API de Google Chart en una conexión HTTPS (que todavía no es compatible). La solución fue añadir la siguiente secuencia de comandos que pasa las llamadas en ...

<?php 
// Set header so our output looks like a PNG 
header("Content-Type: image/png"); 

// Reflect the image from googles chart API 
echo file_get_contents('http://chart.apis.google.com/chart?'.$_SERVER['QUERY_STRING']); 
?> 
0

Si son todos los subdominios del dominio de la misma, que sólo puede añadir este código a cada página:

document.domain = 'domain.com'; 

Luego, simplemente use plain xmlHttpRequest.

Cuestiones relacionadas