【发布时间】:2020-05-19 02:46:00
【问题描述】:
我正在使用 react 应用程序中的 REST API。我的 ASP .NET Web api 服务器正在返回 cookie 以响应 axios 获取请求,但我 UNABLE 无法从响应中获取 set-cookie 标头。 app 和 api 都在本地运行。 我可以在邮递员和浏览器窗口中看到 cookie,但在 react 应用程序中看不到。请帮我整理一下。
React 应用
signInWithEmailAndPassword = (email, password) => {
axios.defaults.withCredentials = true
return new Promise((resolve, reject) => {
axios.get('https://localhost:44399/api/Cross/GetTest')
.then(response => {
var value = response.headers["set-cookie"] // it is always undefined
});
});
};
REST API
public class CrossOrigenController : BaseApiController
{
[Route("api/Cross/GetTest")]
[System.Web.Mvc.HttpGet]
public HttpResponseMessage Get()
{
var resp = new HttpResponseMessage(HttpStatusCode.OK);
var cookie = new CookieHeaderValue("session-id", DateTime.Now.ToString());
cookie.Expires = DateTimeOffset.Now.AddDays(1);
cookie.Domain = Request.RequestUri.Host;
cookie.Path = "/";
cookie.HttpOnly = false;
cookie.Secure = false;
resp.Headers.AddCookies(new CookieHeaderValue[] { cookie });
return resp;
}
}
在 WebApiConfig 中启用核心
config.EnableCors(new EnableCorsAttribute("http://localhost:3000", "*", "*") { SupportsCredentials = true });
【问题讨论】:
-
console.log(response.headers);时看到了吗? -
是的,没有这样的标头值。
-
您的服务器上的
httpOnly是否设置为开启? -
感谢@felixmosh 的回复。 HttpOnly 和 Secure 都设置为 false。
-
为什么需要这个标题?如果可以删除 httpOnly,则可以从
document.cookie访问 cookie 值
标签: reactjs rest cookies axios create-react-app