我有一个 PHP 脚本,如果直接在浏览器中调用(或通过邮递员),它会成功返回一些简单的标头和 set-cookie 标头。我可以从 chrome devTools 中读取类似的响应标头。但是,一旦我通过 Axios 调用它,set-cookie 标头就不会显示,浏览器中也没有保存任何 cookie。
我尝试了不同的事情,例如更改服务器端的响应标头以及在 axios 中使用“withCredentials:true”,但没有任何效果。我什至没有收到错误或任何与 cors 相关的问题。
PHP:
header("Access-Control-Allow-Origin: http://localhost:8080");
header("Content-Type: application/json; charset=UTF-8");
header("Access-Control-Allow-Methods: POST, GET");
header("Access-Control-Allow-Credentials: true");
header("Access-Control-Allow-Headers: Content-Type, Access-Control-Allow-Headers, Authorization, X-Requested-With");
header("Access-Control-Max-Age: 99999999");
setcookie("TestCookie", "Testing", time() + 3600, "/", "localhost", 0);
die();
记者:
Vue.prototype.$http = axios.create({
baseURL: XYZ,
withCredentials: true
})
所以我的第一个问题是为什么直接调用php脚本时会出现header?我怎样才能存档以通过 axios 获取标题?
原文由 user5242820 发布,翻译遵循 CC BY-SA 4.0 许可协议
可能 cookie 是 ‘httpOnly’,这意味着客户端 javascript 无法读取它。因此它没有显示在 chrome cookie 部分。在 mozilla 中测试相同的请求,标题将显示出来。