Tengo un UIWebView
que carga un sitio web que Autenticación de usuario. El sitio crea una cookie de autenticación. Cuando esté en el navegador, a menos que borre sus cookies, siempre estará conectado. Cuando el xCODE se carga, puede ver la cookie que figura en la lista cuando mira el contenedor de cookies, pero no se envía a la vista web. Me gustaría saber cómo hacer que la webView sepa que la cookie de autenticación está allí, por lo que no continúa solicitando autenticación al usuario cada vez.iOS UIwebView Auth Cookies
Respuesta
Puede usar la clase NSURLConnection para realizar una solicitud HTTP para iniciar sesión en el sitio web y recuperar la cookie. Para realizar una solicitud, simplemente cree una instancia de NSURLConnection y asígnele un objeto delegado.
NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:@"http://www.google.com/"]];
NSURLConnection *connection = [NSURLConnection connectionWithRequest:request delegate:self];
A continuación, implemente un método delegado.
- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response
{
NSHTTPURLResponse *HTTPResponse = (NSHTTPURLResponse *)response;
NSDictionary *fields = [HTTPResponse allHeaderFields];
NSString *cookie = [fields valueForKey:"Set-Cookie"]; // It is your cookie
}
Conservar o copiar la cadena de cookies. Cuando desee realizar otra solicitud, agréguela a su encabezado HTTP de su instancia de NSURLRequest.
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:@"http://www.google.com/"]];
[request addValue:cookie forHTTPHeaderField:"Cookie"];
para borrar cookies en cualquier momento puede llamar a este método:
NSHTTPCookieStorage *cookieStorage = [NSHTTPCookieStorage sharedHTTPCookieStorage];
for (NSHTTPCookie *each in [[[cookieStorage cookiesForURL:YOUR_URL] copy] autorelease]) {
[cookieStorage deleteCookie:each];
}
He resuelto el problema. El problema tiene que ver con la configuración ya que UIWebView no se ve como un navegador web estándar. Estoy autenticando al usuario a través de .net e IIS. Agregué un archivo generic.browser en el directorio App_Browser de mi sitio web. El contenido del archivo es:
<browsers>
<browser refID="Mozilla" >
<capabilities>
<capability name="cookies" value="true" />
</capabilities>
</browser>
<browser refID="Default">
<capabilities>
<capability name="cookies" value="true" />
</capabilities>
</browser>
</browsers>
la línea que corrige el problema es la capacidad de permitiendo que las cookies.
La referencia a la solución que utilicé fue esta
se puede leer la cookie de autenticación de todos los sitios web mediante el almacenamiento de cookies compartido.
NSHTTPCookie *cookie;
NSHTTPCookieStorage *cookieJar = [NSHTTPCookieStorage sharedHTTPCookieStorage];
for (cookie in [cookieJar cookies])
{
NSLog(@"%@", cookie);
}
O para obtener la cookie de aspxauth .NET para su sitio web
NSArray *cookiesForURL = [cookieJar cookiesForURL: [NSURL URLWithString: **MYURL**]];
for (cookie in cookiesForURL)
{
if([cookie.name compare:@".ASPXAUTH"] == NSOrderedSame)
{
NSLog(@"%@", cookie);
break;
}
}
- 1. cookies en UIWebView
- 2. ¿Cómo eliminar todas las cookies de UIWebView?
- 3. Establecer cookies para solicitudes UIWebView
- 4. Habilitar cookies en UIWebView (iPhone)
- 5. IOS UIWebView Fuga
- 6. iOS UIWebView dentro de UIScrollView
- 7. Chrome IOS: ¿es solo una UIWebView?
- 8. UIWebView iOS 5: WebKit/JavaScriptCore crash
- 9. iOS uiwebview goBack control de historial
- 10. Escuchar eventos en un UIWebView (iOS)
- 11. de impresión IOS de aire para UIWebView
- 12. Amplíe UIWebView like iOS Mail App
- 13. Emoji y UIWebView en IOS 5
- 14. UIWebView webViewDidFinishLoad no se llama iOS
- 15. No se desplaza en UIWebView en IOS
- 16. en iOS: ¿puedes usar cookies/sesión?
- 17. ¿Cookies persistentes en una aplicación de iOS?
- 18. Borrar cookies para una aplicación iOS determinada
- 19. HTTP basic auth, digest auth y Oauth?
- 20. iOS UIWebView enlace de interceptación haga clic en
- 21. iOS UIWebView Javascript - insertar datos: ¿recibe devoluciones de llamada?
- 22. iOS - UIWebView no funciona debido a un error de análisis
- 23. ¿Cómo agrego un UIWebView a mi aplicación iOS?
- 24. ¿Se rechazarán las aplicaciones de iOS que son solo UIWebView?
- 25. Cómo seleccionar texto usando código CodeMirror2 en UIWebview IOS 5
- 26. Creación de una aplicación de iOS HTML5 con UIWebView
- 27. Cómo mostrar el contenido html en UIWebView IOS
- 28. iOS: cambiar el tamaño de UIWebView para adaptarse al contenido?
- 29. iOS loadHtmlString en UIWebView no funciona con Javascript
- 30. Obtener el nombre de usuario HTTP Auth Auth de javascript?
Ok, Soy nuevo en Xcode y tengo algunas preguntas sobre esto. Siéntase libre de llamarme nombres si son demasiado simples. En el archivo AppDelegate.m, trato de declarar NSURL y NSURLConnection y obtuve un error de compilación sobre las constantes no de beign. Implementé el delegado también en AppDelagate.m y compila. El NSMutable No tengo idea de qué método debería ser. Estoy seguro de que estas son preguntas simples, pero realmente no sé. – Hector