为什么 php 会话值在 Chrome 和 FireFox 中不同?

Why different php session value in Chrome and FireFox?

通过 ajax 将会话值设置为 10。 在 Chrome 中它将设置回零。为什么?? my.php

<?php
session_start();
$_SESSION["temp"] = 0; ?>


<div id="t">$_SESSION["temp"] = <?=$_SESSION["temp"]?> <br></div>
<br><input type="button" value="Plus 5" onclick="javascript:plusn(5);">
<script>
    function plusn(n) {
          $.ajax({
              url: 'myajax.php?n='+n,
              type: 'get',
              async: false,
              success:function(result){
                  $("#t").append(result)
              }
          });
    }
    
    $(document).ready(function() {
        plusn(10); //initial add 10
    })
</script>

myajax.php

<?php
session_start();
$_SESSION["temp"] += $_GET["n"];
exit('$_SESSION["temp"] = '.$_SESSION["temp"].'<br>');
?>

放置在这里:https://cmbody.com/my.php 请使用不同的浏览器进行检查。 Chrome、Edge 和 Android 手机得到错误的结果; Firefox 和 iPhone 得到正确的结果。 P.S。使用 COOKIE

的相同条件

当我以 1000 毫秒的延迟发送它时,它工作正常,但这不是一个正确的解决方案,我将继续调查。

setTimeout(()=>{
        plusn(10);
    },1000)

罪魁祸首是:

<link rel="shortcut icon" href="#" />

浏览器尝试按照指示从同一个 URL 加载网站图标。为此,它向主 PHP 脚本执行附加请求。出现差异是因为 Firefox 使用缓存页面,而基于 Chrome 的浏览器获取新副本: