我在localhost:4000上有一个页面,它有一个由服务器设置的cookie。 该页面还包含一个脚本,该脚本在页面加载时成功地将XHR请求返回给服务器。此XHR请求响应设置第二个cookie。我只能在应用程序(标签)>下的Chrome devtools中看到非XHR cookie。存储(左侧菜单组)>饼干> http://localhost:4000
我可以在“网络”选项卡中看到从服务器返回的XHR cookie(如果第二次加载页面,则会显示XHR请求中正确包含非XHR和XHR cookie:
Request Cookies
xhr_cookie valueABC
from_homepage value123
Response Cookies
xhr_cookie valueABC
所以XHR cookie在某个地方被持久存在,但我无法在Chrome的devtools中看到它。
答案 0 :(得分:0)
不是Chrome的答案,但解决方法是使用Firefox并从Web开发人员窗格上的齿轮启用Storage
“检查器”。
https://developer.mozilla.org/en-US/docs/Tools/Storage_Inspector
答案 1 :(得分:0)
同源请求没问题。
交叉来源请求有一些限制。
文件:1.PHP:
<?php
setcookie("cookie_name_1", "cookie_value_1", time() + (86400 * 30), "/");
?>
<script>
var xhr = new XMLHttpRequest();
xhr.open('GET', 'http://foo.ir/2.php', true);
xhr.withCredentials = true;
xhr.onreadystatechange = function() {
if(this.readyState == xhr.DONE) {
get_res();
}
}
xhr.send(null);
function get_res(){
var xhr = new XMLHttpRequest();
xhr.open('GET', 'http://foo.ir/2.php?is_set', true);
xhr.withCredentials = true;
xhr.onload = function () {
if (xhr.readyState === xhr.DONE) {
if (xhr.status === 200) {
console.log(xhr.responseText);
}
}
};
xhr.send(null);
}
</script>
文件:2.PHP
<?php
header('Access-Control-Allow-Origin: http://localhost');
header('Access-Control-Allow-Credentials: true');
if(isset($_GET["is_set"])){
if(isset($_COOKIE["cookie_name_2"]))
echo "cookies are set:".$_COOKIE["cookie_name_2"];
else
echo "cookies not set";
}else
setcookie("cookie_name_2", "cookie_value_2", time() + (86400 * 30), "/");
?>
可在Here
上找到更多信息根据XMLHttpRequest Level 1和XMLHttpRequest Level 2, 这个特殊的响应标题属于“禁止”响应 您可以使用getResponseHeader()获取的标头,所以唯一 这可能起作用的原因基本上是一个“顽皮”的浏览器
答案 2 :(得分:0)
在Chrome中,禁用“站点隔离”:
react-native
设置为Disable site isolation
有关更多详细信息,请参见:https://blog.ermer.de/2018/06/11/chrome-67-provisional-headers-are-shown