Me encantaría esconder algunos archivos .json en un CDN a la static.mydomain.com. A decir verdad, static.mydomain.com es un CNAME frente a un cubo de Amazon S3.¿Hay alguna forma de cargar json desde un subdominio?
Entiendo que esto infringe el modelo de seguridad de JavaScript. ¿Hay una solución o diseño recomendado? He visto cosas del lado del servidor sugeridas como un script PHP para absorber datos a través de cURL o file_gets_contents(), pero ese es un enfoque bastante poco convincente. ¿Hay alguna forma de cargar JSON desde un servidor extranjero sin ser demasiado hacky?
===
ACTUALIZACIÓN: Aquí está la línea de pensamiento que me llevó a creer que es un problema crossdomain para los subdominios.
Cuando visito una página (por ejemplo, static.mydomain.com/json/file.json) en Chrome, se muestra como si fuera texto sin formato. Cuando visito la página en Firefox, intenta hacer que guarde el .json como descarga.
Veo un resultado peculiar en Firebug: A 200 respuesta sin cuerpo de respuesta.
No puedo registrar los encabezados directos a través del navegador; mi complemento de encabezado HTTP de Firefox no registra nada antes de que se fuerce la descarga. Sin embargo aquí están las cabeceras cuando se carga a través de este snippit jQuery (vale la pena destacar, por debajo de la alerta no se dispara):
jQuery.get("https://static.mydomain.com/json/file.json",
function(data){
alert("Data: " + data);
}
);
Encabezados de respuesta
x-amz-id-2 wSVtjlvFj5ffOtg7ZbKqKw8PexqlzJic7+PxSk975/FcDUnshSV2CiUP2oPWR8yK
x-amz-request-id 8AD81565A783988D
Date Tue, 19 Oct 2010 00:07:22 GMT
Expires Sat, 17 Oct 2015 22:25:37 GMT
Last-Modified Mon, 18 Oct 2010 01:08:13 GMT
Etag "2f1c7adcc1a7b0fd8fc8ce1478e0bf81"
Content-Type application/json
Content-Length 85966
Server AmazonS3
Solicitar encabezados
Host static.mydomain.com
User-Agent Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.6; en-US; rv:1.9.2.8) Gecko/20100722 Firefox/3.6.8
Accept application/json, text/javascript, */*; q=0.01
Accept-Language en-us,en;q=0.5
Accept-Encoding gzip,deflate
Accept-Charset ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive 115
Connection keep-alive
Referer http://mydomain.com/directory/referrer.html
Origin http://mydomain.com
Aunque los encabezados me parecen estar bien, no hay cuerpo de respuesta ya sea para obtener, publicar o cualquier otra cosa que pueda arrojar a través de jQuery. Veo el mismo resultado al configurar el tipo de contenido en application/json, text/javascript y text/plain.
¿Alguien puede explicar este comportamiento? Me imagino que debo estar haciendo algo mal en el lado S3, pero ¿podrían ser problemas de dominio cruzado en JavaScript o puedo descartar problemas de subdominio cruzado?
Lo que hace de dominio es su aplicación sirve de? –
Siempre pensé que los subdominios estaban bien. Lo único que realmente importa es whatever.com. ¿Lo has intentado? – Gregg
Lo ideal es que se publique desde www.midominio.com o midominio.com, y sea capaz de extraer datos estáticos .json de static.midominio.com. – buley