Javascript Chrome-无法读取跨域请求的会话

Javascript Chrome-无法读取跨域请求的会话,javascript,php,google-chrome,Javascript,Php,Google Chrome,首先,如果我的问题标题不正确或不清楚,我要道歉。但我将在下面解释我的问题 假设我有一个名为mywebapp.com的web应用程序,我有一个页面loadjs.php。这里,我有一些JS代码,文件的内容时间是application/javascript loadjs.php(mywebapp.com) 我将在另一个web应用程序的页面(index.html)中使用上述文件作为javascript源代码。假设它是另一个webapp.com index.html(另一个webapp.com) 假设在用

首先,如果我的问题标题不正确或不清楚,我要道歉。但我将在下面解释我的问题

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

loadjs.php(mywebapp.com) 我将在另一个web应用程序的页面(
index.html
)中使用上述文件作为javascript源代码。假设它是另一个webapp.com

index.html
(另一个webapp.com) 假设在用户登录后已经设置了
$\u会话['logged\u in']

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

Chrome浏览器工作不正常。 所以原因是,chrome无法像其他浏览器那样读取会话值

这有什么特殊的原因吗?有没有克服的办法? (请注意,上面的编码示例只是解释我的问题的一个示例。)


期待您的回复。

会话由服务器端处理,因此这不是Chrome的问题

这可能是缓存问题:首先加载js文件时没有警报(因为用户未登录),但当用户登录js时,从缓存加载js文件,而不是再次下载,导致警报不显示

Chrome有一个相当“激进”的缓存策略,以前也遇到过类似的问题

您应该尝试添加一个时间戳或类似的伪值,以便在每次重新加载页面时强制再次下载javascript文件

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


这是一个有趣的问题。我现在没有一个环境来测试这一点,但我想做的第一件事是打印
$\u会话['logged\u in']
,同时使用FF,然后是Chrome发出请求。如果Chrome的值为false,则必须调试原因。这可能是一个跨域策略问题

你可以看看这个:

也许您需要从mywebapp.com发送此标题:

访问控制允许原点:http://anotherwebapp.com

如果Chrome的js控制台显示任何错误,也请分享


更新:问题是由于拨入的chrome浏览器cookie设置受到限制。转到
chrome://settings/content
并确保未检查
阻止第三方cookie和站点数据。

我也有类似问题

问题的原因是: 会话ID作为cookie发送,由于您的请求是跨域的,因此浏览器将其视为第三方cookie。一些浏览器将阻止第三方cookie

您的问题的解决方案是 在客户端(在浏览器中)生成会话ID,使用Javascript sessionStorage存储会话ID,然后将会话ID与每个请求一起发送到服务器


本文中的详细信息(与XMLHttpRequest相关,但您的问题基本相同):

Hi@Critic47,我理解缓存的概念。但是(在未登录场景中),当我更改loadjs.file的警报消息并刷新index.html页面时,它显示了更新的消息。这意味着,缓存不是这里的问题。无论如何,非常感谢您的回复!这可能是因为在这种情况下,文件被保存(因此它基本上是一个不同的文件)并再次下载。不知道,这是一个奇怪的问题,您可能应该试试:PHi@Joy Dutta,我已经通过设置允许所有跨域的头(“访问控制允许源代码:”)进行了尝试。也没有js错误:(
<html>
    <head>
        <script type="text/javascript" src="//mywebapp.com/loadjs.php"></script>
    </head>
    <body>
        Some contenct here..
    </body>
</html>
header("content-type: application/javascript")
if(isset($_SESSION['logged_in']) && $_SESSION['logged_in']==true)
    echo "alert('some message here');";
<head>
<script type="text/javascript" src="//mywebapp.com/loadjs.php?dummy=
     <? echo time() ?>"></script>
</head>