我的解决方案有 2 个项目:MyApp.WebApi
和MyApp.Web
.
MyApp.WebApi
包含所有ApiController
返回所需Json
数据的s。它还有AccountController.Login
应该返回的动作TokenId
,也自动TokrnId
在cookies中设置。
[HttpGet]
public HttpResponseMessage Login(string username, string password)
{
var principal = // Some code to get the principal
var tokenId = principal.TicketId;
var resp = new HttpResponseMessage(HttpStatusCode.OK);
var cookie = new CookieHeaderValue("TokenId", tokenId)
{
Expires = DateTimeOffset.Now.AddDays(1),
Domain = this.Request.RequestUri.Host, Path = "/"
};
resp.Headers.AddCookies(new[] { cookie });
resp.Content = new StringContent(tokenId);
return resp;
}
使用浏览器可以正常工作。但是当我在请求中使用它时,MyApp.Web
不要$.getJSON
使用TokenId
cookie 发送请求。
$.getJSON(serviceAddress)
.done(function (result, status) {
// Do some logic
})
.fail(function (result, status) {
logger.logError(result);
});
问题1。我如何通过发送 cookie来制作HttpRequest
s ?MyApp.Web
问题2。我希望我的 Login 方法返回string
而不是HttpResponseMessage
. 但在那种情况下,我不知道如何设置 cookie,因为我无法直接访问返回的响应(例如resp
)