异常描述
在进行登录权限校验时,需要使用cookie。然而,在设置cookie时会出现以下异常,导致后端session为空异常。前端已经设置WITH_CREDENTIALS: true。
解决办法
将访问的127.0.0.1修改为使用localhost进行访问,就可以携带上cookie了。
可能原因
1. Cookie的域名限制
- Cookie的域名绑定:Cookie 是与域名相关联的。通常,浏览器在发送 HTTP 请求时,只会向与存储该 Cookie 的域名匹配的服务器发送 Cookie。例如,如果 Cookie 绑定的域名是
example.com
,那么只有在访问example.com
或其子域名时,浏览器才会发送该 Cookie。 - IP地址与Cookie:
127.0.0.1
是一个 IP 地址,而不是一个域名。Cookie 的域名策略通常不会将 IP 地址作为有效的域名来处理。因此,当使用127.0.0.1
访问时,浏览器通常不会发送绑定到域名的 Cookie。
2. localhost的特性
- localhost作为域名:
localhost
被视为一个标准的域名,即使它指向127.0.0.1
。浏览器将localhost
视为一个有效的域名,因此可以正常地与 Cookie 关联。 - Cookie与localhost:当你访问
localhost
时,浏览器可以将它识别为一个域名并正常地处理 Cookie,从而发送与localhost
绑定的 Cookie。
3. 安全性考虑
- 使用 IP 地址的局限性:通过 IP 地址发送 Cookie 在安全性上有一些潜在的风险,因为 IP 地址可能没有明确的域名上下文,这可能会导致 Cookie 的意外泄漏或被其他服务使用。因此,浏览器通常更倾向于在域名(如
localhost
)下发送 Cookie,而不是在裸露的 IP 地址(如127.0.0.1
)下。
4. 实用建议
- 如果需要在开发过程中测试带有 Cookie 的请求,建议使用
localhost
而不是127.0.0.1
。这样可以确保 Cookie 能够正常发送和接收,从而避免开发过程中出现与 Cookie 相关的问题。
总的来说,localhost
作为一个域名可以被浏览器识别并与 Cookie 绑定,而 127.0.0.1
仅仅是一个 IP 地址,不被浏览器认为是一个有效的域名,因此无法使用 Cookie。