2017-09-01 60 views
14

我一直在使用郵遞員在我的應用程序開發一段時間,從來沒有任何問題。當我調試我的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調用? –

回答

0

我最近在ASP.NET 2.0中遇到了這個問題。 ASP.NET Core 1.1似乎工作得很好,餅乾正在Postman中設置

+1

歡迎來到SO!由於您沒有完整的答案(「我在2.0版本中看到過這個,但在1.1版本中沒有看到」,所以不會告訴我們爲什麼會發生這種情況,除非它是一個很好的解決方案,已知的bug)。嘗試發表評論,直到你有一個你認爲令人滿意的答案! –

+0

我不認爲他有足夠的聲譽去做... –

0

從你所描述的看來,郵差並沒有拿起你想要的cookie,因爲它不能識別這個名字餅乾或它仍然指向使用舊的餅乾,

可嘗試:

  1. 撤消所有更改名稱,看看它是否工作(只是爲了讓到問題的根源)

  2. 重命名一個cooki e,看看它是否仍然有效,然後繼續其他。

我希望通過這種方式進行調試,它會將您帶到問題的根本原因。

1

由於設置了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的標誌設置爲安全。它在那裏說得很對。如果你沒有設置它,你需要找出誰做的。我會小心通過比較環境來得出推論,因爲很多事情可能會不同 - 遵循證據。 –

0

如果您在瀏覽器上有cookies,則無需擔心。

您可以通過安裝Postman Interceptor擴展程序(「In Sync」按鈕左側)來使用瀏覽器Cookie。

Postman Interceptor

+0

我已經在使用攔截器,並且在這個問題開始之前它的工作很好。正如我在原文中提到的,這個問題的發生時間與我命名我的cookies一致。 – Sam