【发布时间】:2019-07-05 21:39:06
【问题描述】:
我有一个 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();
JS:
Vue.prototype.$http = axios.create({
baseURL: XYZ,
withCredentials: true
})
所以我的第一个问题是为什么直接调用php脚本时会出现header?以及如何归档以通过axios获取标题?
【问题讨论】:
-
您确定这不仅仅是因为浏览器设置阻止了第 3 方 cookie 吗? stackoverflow.com/a/16634941/10955263
-
好吧,我尝试使用相同的浏览器直接调用脚本并且它有效。或者 axios 是否会通过请求阻止某些内容?刚刚检查了您的链接:Chrome 也没有阻止第三方 Cookie
-
“好吧,我尝试用同一个浏览器直接调用脚本,它成功了” - 如果你直接调用它,它不是第 3 方……
-
抱歉,刚刚更新了我的评论。我没有阻止第三方 cookie
标签: javascript php vue.js axios