我已將WebApi項目分成MVC項目(http://mydomain.com)和WebApi項目(http://api.mydomain.com)。WebApi和MVC在不同的項目中共享cookies?
我的MVC項目只是管理認證和服務的意見(使用knockoutJS和Ajax)。
我的問題是,要求從的WebAPI域(使用AJAX)信息時,從MVC項目中的cookie不會被髮送。或者說,在測試過程中,我在不同部分使用兩臺IIS Express服務器。
該項目將在稍後部署Azure,因此任何解決方案都必須在兩個網站之間運行。
那麼我怎樣才能讓這些cookies通過發送?或者我應該改用某種令牌來代替?
編輯
它的工作,直到我添加contentType
到$.ajax
請求。然後我得到CORS預檢選項。我用我認爲正確的標題回答了200。如果我刪除該選項,我會再次收到所有Cookie的工作請求。
作品
$.ajax({
url: "http://localhost:54304/Organization/",
type: "POST",
data: "$top=10",
xhrFields: {
withCredentials: true
},
crossDomain: true,
success: function (data) { console.log(data); }
});
不起作用:
$.ajax({
url: "http://localhost:54304/Organization/",
contentType: 'application/json', //<--- this triggers preflight
type: "POST",
data: "$top=10",
xhrFields: {
withCredentials: true
},
crossDomain: true,
success: function (data) { console.log(data); }
});
現在是一個jQuery的 「功能」 或者是CORS是如何工作的?我應該設置什麼標題?我試着回覆:
Access-Control-Allow-Credentials:true
Access-Control-Allow-Origin:http://localhost:51343
它也適用於不同的端口嗎?這是表單身份驗證Cookie – jgauffin
Cookie始終在端口間工作。 (這可以說是一個設計缺陷) – SLaks
這很奇怪,因爲我在Google Chrome中使用了開發工具,並且請求中沒有包含cookie。但我會檢查cookie域。 – jgauffin