邮差不使用cookie

问题描述:

我一直在使用邮递员在我的应用程序开发一段时间,从来没有任何问题。当我调试我的ASP.NET API代码时,我通常在谷歌浏览器中使用它。邮差不使用cookie

大约一个月前,我开始有问题,邮差似乎没有发送我的网站发布的cookie。

通过Fiddler,我检查了我对我的API所做的调用,并看到邮差不会发送由我的API应用发出的cookie。它发送其他Cookie,但不是一个它应该派 - 见下:

enter image description here

在“Cookie”,我看到了饼干我发出即.AspNetCore.mysite_cookie - 见下:

enter image description here

任何想法,为什么这可能会发生?

P.S.我认为这个问题是在我对代码进行一些更改以命名我的cookie后开始的。我的API应用程序使用社交身份验证,并决定命名这两个cookie,即一旦用户通过身份验证时我从Facebook/Google/LinkedIn收到的一个cookie,以及我向经过身份验证的用户发出的一个。我打电话给我从社交网站social_auth_cookie得到的cookie,我发出的cookie被命名为mysite_cookie。我认为这与我遇到的这个问题有关。

+1

您是在本地测试还是在生产部署? –

+0

无论在哪种情况下,我都得到了相同的结果。 – Sam

+1

它部署在http或https上吗?并且是http或https上的API调用? –

我最近在ASP.NET 2.0中遇到了这个问题。 ASP.NET Core 1.1似乎工作得很好,饼干正在Postman中设置

+1

欢迎来到SO!由于您没有完整的答案(“我在2.0版本中看到过这个,但在1.1版本中没有看到”,所以不会告诉我们为什么会发生这种情况,除非它是一个很好的解决方案,已知的bug)。尝试发表评论,直到你有一个你认为令人满意的答案! –

+0

我不认为他有足够的声誉去做... –

从你所描述的看来,邮差并没有拿起你想要的cookie,因为它不能识别这个名字饼干或它仍然指向使用旧的饼干,

可尝试:

  1. 撤消所有更改名称,看看它是否工作(只是为了让到问题的根源)

  2. 重命名一个cooki e,看看它是否仍然有效,然后继续其他。

我希望通过这种方式进行调试,它会将您带到问题的根本原因。

由于设置了secure attribute,因此所涉及的cookie无法通过HTTP连接合法发送。

出于某种原因,mysite_cookie有其安全属性从social_auth_cookie设置不同,或者是因为你设置它的代码...

var cookie = new HttpCookie("mysite_cookie", cookieValue); 
cookie.Secure = true; 

...或者因为服务配置为自动设置,例如在web.config是这样的:

<httpCookies httpOnlyCookies="true" requireSSL="true"/> 

该标志也可能通过在生产环境中的网络设备(例如一个SSL卸载设备)来设置。但是在你的开发环境中这不太可能。

我建议你尝试相同的代码库,但通过https连接。如果您正在处理影响身份验证机制的代码,那么无论如何您确实应该使用set up your development environment with SSL,否则您将错过许多错误,并且您将无法执行任何有意义的笔测试或应用程序扫描以查找潜在的威胁。

+0

我没有设置cookie以确保安全,并且在我的应用程序根目录中没有web.config。此外,邮差无法在生产环境和本地环境中发送cookie。我的产品使用SSL,但localhost不。你是否仍然认为这是由cookie设置为安全的? – Sam

+0

Cookie的标志设置为安全。它在那里说得很对。如果你没有设置它,你需要找出谁做的。我会小心通过比较环境来得出推论,因为很多事情可能会不同 - 遵循证据。 –

如果您在浏览器上有cookies,则无需担心。

您可以通过安装Postman Interceptor扩展程序(“In Sync”按钮左侧)来使用浏览器Cookie。

Postman Interceptor

+0

我已经在使用拦截器,并且在这个问题开始之前它的工作很好。正如我在原文中提到的,这个问题的发生时间与我命名我的cookies一致。 – Sam