2017-03-27 1 views
1

J'essaie d'appeler une méthode api auth, qui ne fournit pas l'identifiant de session dans json, mais redirige vers une autre page et fournit l'identifiant de session en tant que cookie.Impossible d'obtenir un cookie à partir d'une réponse de redirection

Voici ce que le propriétaire du site m'a suggéré de le faire:

• Configurez votre client de ne pas suivre la redirection - juste obtenir l'URL • Si vous permet de rester dans la page courante cela signifie que la connexion a échoué • Si vous êtes redirigé vers principal/index, vous correctement authentifié, et vous pouvez garder le cookie pour les demandes supplémentaires

var webRequest = (HttpWebRequest)WebRequest.Create("https:\\URL"); 
     webRequest.UserAgent = 
      "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2785.116 Safari/537.36"; 
     webRequest.Method = "POST"; 
     webRequest.Timeout = 60000; 
     webRequest.AllowAutoRedirect = true; 
     webRequest.CookieContainer = new CookieContainer(); 

     webRequest.ContentType = "application/x-www-form-urlencoded"; 

     webRequest.ContentLength = data.Length; 

     using (var stream = webRequest.GetRequestStream()) 
     { 
      stream.Write(data, 0, data.Length); 
     } 

     var response = (HttpWebResponse)webRequest.GetResponse(); 
     var test = response.ResponseUri; 

quand j'ai essayé avec AllowAutoRedirect comme faux, je n'ai pas l'URL redirigée, mais obtenu le biscuit. Si j'essaie avec AllowAutoRedirect comme vrai, alors je reçois l'URL redirigée, mais pas le cookie. Si je garde AllowAutoRedirect comme faux Comment puis-je être sûr que la journalisation a réussi et que j'ai reçu l'identifiant de session correct en tant que cookie?

+0

Nous ne pouvons pas répondre à cette question, seulement deviner. Vous devrez essayer le cookie d'authentification que vous avez. Après avoir fait la demande d'authentification et reçu le cookie, vous devrez faire plus de requêtes (demandes, qui ne fonctionneraient pas sans authentification) qui utilisent le même cookie et voir si elles fonctionnent. Vous pouvez inspecter le trafic vers le serveur Web en utilisant cet outil gratuit: http://www.telerik.com/fiddler – mortb

Répondre

0

Je l'ai compris.

Si nous définissons AllowAutoRedirect comme false, la réponse aura un en-tête ajouté comme emplacement qui contiendra l'URL redirigée. J'ai reçu l'URL redirigée dans l'emplacement, dans ce genre de scénario, la réponse http devrait être 302.