Ver Mensaje Individual
  #12 (permalink)  
Antiguo 30/03/2013, 23:23
Avatar de dontexplain
dontexplain
 
Fecha de Ingreso: junio-2012
Mensajes: 536
Antigüedad: 12 años, 5 meses
Puntos: 127
Respuesta: Cargar imagenes desde el server obteniendo la ruta con ajax?

El navegador internamente hace peticiones HTTP de la siguiente forma:
  • Establece un socket TCP con la máquina de destino. Internamente, el sistema a 3 pasos (SYN,SYN-ACK,ACK) a nivel de red. Si es una dirección DNS primero la busca en la caché y si no existe realiza una petición mediante UDP al servidor DNS.
  • Una vez establecido el socket, realiza una petición HTTP y establece un listener interno a la escucha de la respuesta.
  • El servidor remoto, en cualquier momento, responde con una respuesta HTTP con las cabeceras asignadas (con el content-type a imagen) y el body de la respuesta con el contenido binario de la imagen.

Ajax no es el navegador, es una herramientilla que se proporciona para realizar peticiones asíncronamente, pero es una herramienta, que no tiene el potencial de las funciones internas del navegador. Para mostrar imágenes mediante ajax se hace lo que explica emprear, se usa base64, que es texto, la limitación propia de ajax.

La explicación a esto es evidente, ajax maneja texto, si viste alguna vez una tabla de carácteres ascii verás que no todos son imprimibles como texto sino que hay muchos carácteres que no se pueden imprimir y que forman parte natural del contenido de una imagen. Por ejemplo, marqué en amarillo la parte donde terminan las cabeceras (retorno de carro - nueva línea = 0d - 0a x 2) y comienza el contenido de la imagen, verás que hay caracteres que no se pueden imprimir (aparecen como un punto a la derecha), incluso caracteres nulos.



Petición HTTP:

Código HTTP:
Ver original
  1. GET /hphotos-ak-ash3/550081_405979536099703_254407733_n.jpg HTTP/1.1
  2. Host: sphotos-g.ak.fbcdn.net
  3. Connection: keep-alive
  4. User-Agent: Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.31 (KHTML, like Gecko) Chrome/26.0.1410.43 Safari/537.31
  5. Accept: */*
  6. Accept-Encoding: gzip,deflate,sdch
  7. Accept-Language: es-ES,es;q=0.8
  8. Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.3

Respuesta a la petición. (200)
Código HTTP:
Ver original
  1. HTTP/1.1 200 OK
  2. Content-Type: image/jpeg
  3. Last-Modified: Fri, 01 Jan 2010 00:00:00 GMT
  4. X-Backend: hs833.ash3
  5. X-BlockId: 550081
  6. X-Object-Type: PHOTO
  7. Content-Length: 63937
  8. Date: Sun, 31 Mar 2013 05:09:34 GMT
  9. Connection: keep-alive
  10. Cache-Control: max-age=1209600
  11.  
  12. ......JFIF..............*.....ICC_PROFILE.......lcms....mntrRGB XYZ .........).9acspAPPL...................................-lcms...............................................
  13. desc.......^cprt...\....wtpt...h....bkpt...|..
__________________
21añero.
HTML/CSS, PHP, JS/jQuery, Mysql; NodeJS/Socket.io (& V8); C++ ; Python (wxpy); Ensamblador.
Músico (clarinetista/pianista) y compositor

Última edición por dontexplain; 30/03/2013 a las 23:32