React Axios,无法读取axios响应中的Set-Cookie头部

3
我无法在axios的响应对象中读取set-cookie头信息。我正在将用户/密码发送到后端,并且响应中的授权cookie在Set-Cookie头信息中,但是我无法在res.header对象中看到它,然而,如果我使用Chrome开发工具并打开网络选项卡,我可以在响应头信息中看到cookie。
有什么线索吗?
我的post请求: axios.post( endPointLogin, { email, password }, { withCredentials: true } )
控制台中的res对象: The res object in console Chrome开发工具中的头部,包含set-cookie头信息: the header on chrome dev tools with the set cookie header
export function login(email, password) {
  return http.post(
    endPointLogin,
    { email, password },
    { withCredentials: true }
  );
}

    const handleSignIn = async ( e ) => {
        e.preventDefault();
        const respuesta = await login( cuenta.email, cuenta.password );
        console.log( "res:", respuesta );
    };

响应:

config: {url: "http://localhost:3000/usuario/auth", method: "post", data: "{"email":"admin@bmw.com","password":"admin"}", headers: {…}, transformRequest: Array(1), …}
data: "OK"
headers:
access-control-allow-credentials: "true"
access-control-allow-headers: "Origin, X-Requested-With, Content-Type, Accept"
access-control-allow-origin: "http://localhost:5000"
connection: "close"
content-length: "2"
content-type: "text/plain; charset=utf-8"
date: "Tue, 03 Nov 2020 15:00:46 GMT"
etag: "W/"2-nOO9QiTIwXgNtWtBJezz8kv3SLc""
vary: "Accept-Encoding"
x-powered-by: "Express"
__proto__: Object
request: XMLHttpRequest {__sentry_xhr__: {}, readyState: 4, timeout: 0, withCredentials: true, onreadystatechange: ƒ, }
status: 200
statusText: "OK"
__proto__: Object

**在Google Dev工具的网络选项卡中查看响应头信息**

access-control-allow-credentials: true
access-control-allow-headers: Origin, X-Requested-With, Content-Type, Accept
access-control-allow-origin: http://localhost:5000
connection: close
content-length: 2
content-type: text/plain; charset=utf-8
date: Tue, 03 Nov 2020 15:00:46 GMT
etag: W/"2-nOO9QiTIwXgNtWtBJezz8kv3SLc"
set-cookie: jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJlbXByZXNhIjoiYm13IiwiZW1haWwiOiJhZG1pbkBibXcuY29tIiwic2VndXJpZGFkIjoiYWRtaW4iLCJpYXQiOjE2MDQ0MTU2NDZ9.CpIIScbZQCKsyxvc64CJ290fNCUlpKxZ5zBT3JK2tvc; Path=/
Vary: Accept-Encoding
X-Powered-By: Express

你好,如果您能分享您正在使用的代码,并向我们展示您如何尝试访问此标题,以及响应和错误的打印或复制,那将非常有用。 - Diego Alberto Zapata Häntsch
2个回答

0

由于此请求中存在CORS,请授权头部被读取 另外,cookie不能是“httpOnly”,但似乎情况是这样的 更多CORS的信息


谢谢!我改变了我的设置,使用代理来避免CORS问题,现在我得到了更多的头信息。但我仍然无法获取set-cookie,所以我认为问题可能出在httpOnly上,正如你指出的那样。 - Sebastian Ortega

0

正如在这篇mdn文章中所提到的,您无法在JavaScript代码中读取Set-Cookie头。


1
谢谢,现在它可以工作了。我的错误是我试图读取cookie并将其存储到setCookie方法中,而这是由浏览器完成的。 - Sebastian Ortega
@SebastianOrtega,我该如何将那个cookie发送到服务器?登录没问题,响应与您的相同。 - May'Habit
如果您在不同的域中,只需设置withCredentials: true;如果您在相同的域中,则可以正常工作。 - Sebastian Ortega
文章链接缺失。 - Facundo Colombier

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接