2017-10-01 14 views
0

j'ai une situation où je veux utiliser un cookie avec ces 2 sous-domaines app.example.com (ASP.NET) et appapi.example.com (Web API). Je suis en mesure de mettre le cookie avec succès en utilisant l'API comme ceci:Comment utiliser un cookie avec des sous-domaines

public HttpResponseMessage Get() 
{ 
      ... 
      var result = jsonHelper.setHttpResponseMessage(obj); 

      List<CookieHeaderValue> cookies = new List<CookieHeaderValue>(); 
      NameValueCollection values = new NameValueCollection(); 

      values["Value1"] = value1; 
      values["Value2"] = value2; 
      values["Value3"] = value3; 
      CookieHeaderValue cookie = new CookieHeaderValue("MyCookie", values); 
/*#if DEBUG 
       cookie.Domain = Request.RequestUri.Host; 
#else*/ 
       cookie.Domain = ".example.com"; //I made this based on the answers to the questions posted below 
//#endif 
       cookie.Path = "/"; 
       cookie.Expires = DateTime.Now.AddHours(1); 
       cookie.HttpOnly = true; 
       cookies.Add(cookie); 
       result.Headers.AddCookies(new CookieHeaderValue[] { cookie }); 

       return result; 
} 

J'utilise Postman et je reçois une réponse qui ressemble à ceci sous l'onglet Cookie:

Name   Value 
MyCookie  Value1=2&Value2=test&Value3=val 

Ensuite, J'envoie le cookie à app.example.com/Page.aspx en utilisant Postman. Le code à Page.aspxPage_Load ressemble à ceci:

if (!IsPostBack) 
{ 
    if (Request.Cookies["MyCookie"] != null) 
    { 
     var myCookie = Request.Cookies["MyCookie"].Values; 
     var value1 = myCookie["Value1"]; 
     var value2 = myCookie["Value2"]; 
    } 
... 

Ici, je ne reçois pas les valeurs que je veux ce qui signifie que Request.Cookies["MyCookie"] est null

Je suis au courant et this questionthis one que j'ai implémenté ci-dessus, mais je n'ai toujours pas résolu mon problème. Sur la base de cela, je crois qu'il est possible d'utiliser un cookie avec 2 ou plusieurs sous-domaines, donc j'ai besoin de savoir comment l'implémenter correctement.

+1

je ne pense pas que vous avez fait quelque chose de mal, il a été probablement vous ne fixez pas le cookie à votre demande de postier correctement. En fait, vous n'avez même pas besoin de définir le domaine cookie si vous utilisez le facteur pour tester, bien sûr pour le déploiement réel, vous devez l'avoir, ce que j'essaie d'expliquer, c'est que votre problème n'est pas lié à votre code. parce que le domaine de cookie est utilisé par les navigateurs pour déterminer s'ils doivent joindre le cookie à la demande, puisque vous pouvez placer manuellement votre cookie dans le facteur, cela n'a aucune importance –

+0

@RayH Pouvez-vous s'il vous plaît indiquer comment un cookie devrait être envoyé en utilisant Postman? Je l'ajoute sous ** Onglet En-têtes **, ** Clé ** = Cookie, ** Valeur ** = MyCookie – Ahmed

Répondre

1

https://www.getpostman.com/docs/postman/sending_api_requests/cookies

ci-dessus est le document officiel de la façon d'ajouter cookie dans postier

+0

C'était comme vous l'avez dit dans votre commentaire, le problème était dû au fait que le cookie n'était pas envoyé correctement. C'est parce que je n'utilisais pas Postman comme application _native_ et que je n'avais que le bouton ** Code ** sous le bouton ** Envoyer **. J'ai déjà vu des liens vers des documents, mais j'ai supposé que c'était une documentation périmée parce que je n'avais pas le bouton _Cookies_. Il semble que nous avons ** 2 versions de Postman ** (extension Chrome & Postman Native App). Après avoir téléchargé l'application native, je pourrais utiliser le bouton ** Cookies ** et le problème est résolu. – Ahmed

+0

Veuillez indiquer les étapes dans le lien que vous avez partagé afin que je puisse accepter votre réponse, car les liens externes peuvent être modifiés à l'avenir. – Ahmed

+0

@Ahmed peu importe, le lien est bien, je ne pense pas qu'ils vont changer les documents et il est également facile à rechercher. ;) –