2013-03-03 77 views
1

從設置的WebAPI的cookie我正在給的WebAPI服務,這將在相應對象中的cookie的呼叫。 呼叫從angularjs通過$資源 取得所以這是服務器代碼:通過angularjs

CookieHeaderValue cookie = new CookieHeaderValue("Token", "blah") { HttpOnly = true, Expires = DateTime.Now.AddYears(10), Path="/" }; 
response.Headers.AddCookies(new CookieHeaderValue[] { cookie }); 

這工作,我可以看到的Set-Cookie頭的響應,但是該cookie沒有被設置。

我的一個朋友必須設置xhrFields' withCredentials爲真,他使用jQuery的時候,所以我不知道是否有東西,需要的角度進行配置呢?

+0

是否與發出請求的頁面在同一個域上的api? – Jason 2013-03-05 00:53:58

+0

不,不同的域名。 – Evgeni 2013-03-05 17:40:20

+0

@Evgeni你有答案嗎?因爲我陷入了同樣的情況。 – 2017-01-10 06:52:30

回答

1

可能有很多事情正在進行。

首先,因爲你是在不同的領域,你可能需要實現CORs (cross origin resource sharing),但似乎該請求被成功地進行。我不確定爲什麼會這樣,我會認爲瀏覽器會阻止它。無論如何,這裏有一個jsfiddle that illustrates using CORs with angularjs to make both $http & $resource請求。訣竅似乎是配置$ http服務:

$http.defaults.useXDomain = true; 

另一個想法是,從一個域的Cookie,不能由其他域訪問。這是另一個question on cookies with angularjs,但請求和服務器似乎在同一個域中。這裏是關於cookie domains的討論,以及它們是如何應用的。

如果有可能我會嘗試讓cookie請求/響應在同一個域的工作,然後將客戶端移到另一個域。

+0

根據此https://groups.google.com/forum/?fromgroups=#!topic/angular/kl2BVOubG4I - 沒有像useXDomain這樣的選項。無論如何嘗試過,沒有任何區別。另外,我應該讓自己更清楚 - 儘管客戶端位於不同的域,但它是服務器設置和讀取cookie,所以我認爲在這種情況下CORS應該是無關緊要的。這是一個Ajax調用,但從瀏覽器的角度來看,這沒有什麼區別,afaik。 – Evgeni 2013-03-06 21:55:59