Ver Mensaje Individual
  #2 (permalink)  
Antiguo 13/08/2014, 06:12
Pantaláimon
 
Fecha de Ingreso: julio-2006
Ubicación: Barcelona
Mensajes: 244
Antigüedad: 17 años, 9 meses
Puntos: 32
Respuesta: persistencia de sesión + cross-origin + ajax

Voy a dar un poco de información recogida del network de chrome por si es útil. He hecho las siguientes pruebas:

Antes de hacer cada una de las 3 pruebas he eliminado los cookies. A la información del network de chrome he añadido alguna frase en rojo remarcando diferencias entre las pruebas y escribiendo mis dudas.

1) Proyecto antiguo localhost:14730/ (unido):
peticion via ajax a localhost:14730/api/login/get/user/1234 y después petición ajax a localhost:14730/api/logged

localhost:14730/api/login/get/user/1234
Cita:
Remote Address:::1:14730
Request URL:http://localhost:14730/api/login/get/user/1234
Request Method:GET
Status Code:200 OK
Request Headersview source
Accept:*/*
Accept-Encoding:gzip,deflate,sdch
Accept-Language:es-ES,es;q=0.8,en;q=0.6
Connection:keep-alive
Host:localhost:14730
Referer:http://localhost:14730/login
User-Agent:Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/36.0.1985.125 Safari/537.36
X-Requested-With:XMLHttpRequest ++No está ni en 2 ni en 3
Response Headersview source
--Access-Control-Allow-Origin:* Está en 2 i 3 pero no aquí (normal, no lo necesita)
Cache-Control:no-cache
Content-Length:4
Content-Type:application/json; charset=utf-8
Date:Wed, 13 Aug 2014 11:15:16 GMT
Expires:-1
Pragma:no-cache
Server:Microsoft-IIS/8.0
Set-Cookie:ASP.NET_SessionId=egw0jjwrllkkbph1az0ovdju; path=/; HttpOnly
X-AspNet-Version:4.0.30319
X-Powered-By:ASP.NET
X-SourceFiles:=?UTF-8?B?QzpcVXNlcnNcZ2FyY2lhYnhcRG9jdW1lbnRzXFZpc3VhbC BTdHVkaW8gMjAxMlxQcm9qZWN0c1xTQ0dcV2ViXFNUQ0cuU0lD LldlYkFwcFxXU0hvbWVcYXBpXGxvZ2luXGdldFxlZ3NcQkFEQU xPTkE=?=
localhost:14730/api/logged
Cita:
Remote Address:::1:14730
Request URL:http://localhost:14730/api/logged
Request Method:GET
Status Code:200 OK
Request Headersview source
Accept:*/*
Accept-Encoding:gzip,deflate,sdch
Accept-Language:es-ES,es;q=0.8,en;q=0.6
Connection:keep-alive
Cookie:ASP.NET_SessionId=egw0jjwrllkkbph1az0ovdju
Host:localhost:14730
Referer:http://localhost:14730/login
User-Agent:Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/36.0.1985.125 Safari/537.36
X-Requested-With:XMLHttpRequest ++No está ni en 2 ni en 3
Response Headersview source
--Access-Control-Allow-Origin:* Está en 2 i 3 pero no aquí (normal, no lo necesita)
Cache-Control:no-cache
Content-Length:4
Content-Type:application/json; charset=utf-8
Date:Wed, 13 Aug 2014 11:15:16 GMT
Expires:-1
Pragma:no-cache
Server:Microsoft-IIS/8.0
X-AspNet-Version:4.0.30319
X-Powered-By:ASP.NET
X-SourceFiles:=?UTF-8?B?QzpcVXNlcnNcZ2FyY2lhYnhcRG9jdW1lbnRzXFZpc3VhbC BTdHVkaW8gMjAxMlxQcm9qZWN0c1xTQ0dcV2ViXFNUQ0cuU0lD LldlYkFwcFxXU0hvbWVcYXBpXGxvZ2dlZA==?=
2) Proyecto nuevo web service localhost:55121/:
petición via http a localhost:55121/api/login/get/user/1234 y después petición http a localhost:55121/api/logged

localhost:55121/api/login/get/user/1234
Cita:
Remote Address:::1:55121
Request URL:http://localhost:55121/api/login/get/user/1234
Request Method:GET
Status Code:200 OK
Request Headersview source
Accept:text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8 **Diferente a 1 y 3
Accept-Encoding:gzip,deflate,sdch
Accept-Language:es-ES,es;q=0.8,en;q=0.6
Connection:keep-alive
Host:localhost:55121
User-Agent:Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/36.0.1985.125 Safari/537.36
Response Headersview source
Access-Control-Allow-Origin:*
Cache-Control:no-cache
Content-Length:4
Content-Type:application/json; charset=utf-8
Date:Wed, 13 Aug 2014 11:26:39 GMT
Expires:-1
Pragma:no-cache
Server:Microsoft-IIS/8.0
Set-Cookie:ASP.NET_SessionId=gmgach1zx121rikyzr3v4osn; path=/; HttpOnly
X-AspNet-Version:4.0.30319
X-Powered-By:ASP.NET
X-SourceFiles:=?UTF-8?B?QzpcVXNlcnNcZ2FyY2lhYnhcRG9jdW1lbnRzXFZpc3VhbC BTdHVkaW8gMjAxMlxQcm9qZWN0c1xTQ0dcV2ViXHByb3ZhbnQz XFNJQy5XZWJBUElcU0lDLldlYkFQSVxhcGlcbG9naW5cZ2V0XG Vnc1xCQURBTE9OQQ==?=
localhost:55121/api/logged
Cita:
Remote Address:::1:55121
Request URL:http://localhost:55121/api/logged
Request Method:GET
Status Code:200 OK
Request Headersview source
Accept:text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8 **Diferente a 1 y 3
Accept-Encoding:gzip,deflate,sdch
Accept-Language:es-ES,es;q=0.8,en;q=0.6
Connection:keep-alive
Cookie:ASP.NET_SessionId=gmgach1zx121rikyzr3v4osn
Host:localhost:55121
User-Agent:Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/36.0.1985.125 Safari/537.36
Response Headersview source
Access-Control-Allow-Origin:*
Cache-Control:no-cache
Content-Length:4
Content-Type:application/json; charset=utf-8
Date:Wed, 13 Aug 2014 11:28:24 GMT
Expires:-1
Pragma:no-cache
Server:Microsoft-IIS/8.0
X-AspNet-Version:4.0.30319
X-Powered-By:ASP.NET
X-SourceFiles:=?UTF-8?B?QzpcVXNlcnNcZ2FyY2lhYnhcRG9jdW1lbnRzXFZpc3VhbC BTdHVkaW8gMjAxMlxQcm9qZWN0c1xTQ0dcV2ViXHByb3ZhbnQz XFNJQy5XZWJBUElcU0lDLldlYkFQSVxhcGlcbG9nZ2Vk?=
3) Proyecto nuevo página web localhost:49632/:
petición via ajax a localhost:55121/api/login/get/user/1234 y después petición ajax a localhost:55121/api/logged

localhost:55121/api/login/get/user/1234
Cita:
Remote Address:::1:55121
Request URL:http://localhost:55121/api/login/get/user/1234
Request Method:GET
Status Code:200 OK
Request Headersview source
Accept:*/*
Accept-Encoding:gzip,deflate,sdch
Accept-Language:es-ES,es;q=0.8,en;q=0.6
Connection:keep-alive
Host:localhost:55121
Origin:http://localhost:49632
Referer:http://localhost:49632/login
User-Agent:Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/36.0.1985.125 Safari/537.36
Response Headersview source
Access-Control-Allow-Origin:*
Cache-Control:no-cache
Content-Length:4
Content-Type:application/json; charset=utf-8
Date:Wed, 13 Aug 2014 11:30:40 GMT
Expires:-1
Pragma:no-cache
Server:Microsoft-IIS/8.0
Set-Cookie:ASP.NET_SessionId=xdbot45jhb4u1ykhuswrmx5i; path=/; HttpOnly
X-AspNet-Version:4.0.30319
X-Powered-By:ASP.NET
X-SourceFiles:=?UTF-8?B?QzpcVXNlcnNcZ2FyY2lhYnhcRG9jdW1lbnRzXFZpc3VhbC BTdHVkaW8gMjAxMlxQcm9qZWN0c1xTQ0dcV2ViXHByb3ZhbnQz XFNJQy5XZWJBUElcU0lDLldlYkFQSVxhcGlcbG9naW5cZ2V0XG Vnc1xCQURBTE9OQQ==?=
localhost:55121/api/logged
Cita:
Remote Address:::1:55121
Request URL:http://localhost:55121/api/logged
Request Method:GET
Status Code:200 OK
Request Headersview source
Accept:*/*
Accept-Encoding:gzip,deflate,sdch
Accept-Language:es-ES,es;q=0.8,en;q=0.6
Connection:keep-alive
--Falta el cookie de sesión que sí que está en 1 y 2. Por eso devuelve false. ¿Pero por que no hay cookie?
Host:localhost:55121
Origin:http://localhost:49632
Referer:http://localhost:49632/login
User-Agent:Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/36.0.1985.125 Safari/537.36
Response Headersview source
Access-Control-Allow-Origin:*
Cache-Control:no-cache
Content-Length:5 **Diferente a 1 y 2 (normal, pues la respuesta es "false" que tiene 5 caracteres. ¿Pero por qué es false?
Content-Type:application/json; charset=utf-8
Date:Wed, 13 Aug 2014 11:30:40 GMT
Expires:-1
Pragma:no-cache
Server:Microsoft-IIS/8.0
X-AspNet-Version:4.0.30319
X-Powered-By:ASP.NET
X-SourceFiles:=?UTF-8?B?QzpcVXNlcnNcZ2FyY2lhYnhcRG9jdW1lbnRzXFZpc3VhbC BTdHVkaW8gMjAxMlxQcm9qZWN0c1xTQ0dcV2ViXHByb3ZhbnQz XFNJQy5XZWJBUElcU0lDLldlYkFQSVxhcGlcbG9nZ2Vk?=
Me da mala espina esta sentencia:
Set-Cookie:ASP.NET_SessionId=xdbot45jhb4u1ykhuswrmx5i; path=/; HttpOnly
Aunque la sentencia es igual para todas las pruebas, tengo entendido que esta restricción impide que las cookies funcionen via script. Eso me daría a entender porque la prueba 2 funciona y la prueba 3 no. Sin embargo, si fuera por eso, ¿por qué funciona la prueba 1 si se están haciendo las peticiones via ajax?

A ver si alguien sabría aclarármelo.

Muchas gracias!
__________________
github.com/xgbuils | npm/xgbuils