gpt4 book ai didi

javascript - Chrome - 无法读取跨域请求的 session

转载 作者:行者123 更新时间:2023-11-30 17:31:37 26 4
gpt4 key购买 nike

首先,如果我的问题标题不正确或不清楚,我深表歉意。但我会在下面解释我的问题。

假设我有一个名为 mywebapp.com 的 Web 应用程序,并且我有一个页面 loadjs.php。在这里,我有一些 JS 代码,文件的内容时间是 application/javascript

loadjs.php (mywebapp.com)

header("content-type: application/javascript")
echo "alert('some message here');";

我将在另一个网络应用程序的页面 (index.html) 中使用上述文件作为 javascript 源。假设它是 anotherwebapp.com

index.html (anotherwebapp.com)

<html>
<head>
<script type="text/javascript" src="//mywebapp.com/loadjs.php"></script>
</head>
<body>
Some contenct here..
</body>
</html>

运行时,应该有 javascript 警报,正如我在 loadjs.php (mywebapp.com) 中所写的那样。

注意事项:

以上操作没有任何问题。

我的问题:

现在假设我只想为 mywebapp.com 的登录用户显示此警报。这意味着,当已经在 mywebapp.com 中登录的用户在同一浏览器中访问 anotherwebapp.com 时将看到警告。

所以我的 loadjs.php 文件将如下所示。

header("content-type: application/javascript")
if(isset($_SESSION['logged_in']) && $_SESSION['logged_in']==true)
echo "alert('some message here');";

假设 $_SESSION['logged_in'] 已在用户登录后设置。

它在 Firefox 和 IE 中工作正常。但是..

Chrome 浏览器无法正常工作。

所以原因是,chrome 不能像其他浏览器那样读取 session 值。

这有什么特殊原因吗?有什么办法可以克服吗?

(请注意,上面的编码示例只是解释我的问题的示例。)

期待您的来信。

最佳答案

session 是在服务器端处理的,因此这不是 Chrome 的问题。

这可能是一个缓存问题:js文件第一次加载时没有警告(因为用户没有登录)但是当用户登录时js从缓存中加载并且没有再次下载导致警告不显示.

Chrome 有一个非常“激进”的缓存策略,以前有过这样的麻烦。

您应该尝试添加时间戳或某种虚拟值,以便在每次重新加载页面时强制再次下载 javascript 文件

<head>
<script type="text/javascript" src="//mywebapp.com/loadjs.php?dummy=
<? echo time() ?>"></script>
</head>

我已经有一段时间没有使用 php 了,所以这可能行不通,但你应该明白了

关于javascript - Chrome - 无法读取跨域请求的 session ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22960040/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com