6

我必须为我的 ISV 托管的校友组管理一个小型网站。该 url 类似于 www.myIsv.com/myWebSite/ 非常丑陋且非常容易忘记。网络服务器的主管理员注册了一个域名 www.mysmallwebsite.com 并放置了一个 index.html 包含以下内容:

<html>
<head>
<title>www.mysmallwebsite.com</title>
</head>

<frameset>
   <frame src="http://www.myIsv.com/myWebSite/" name="redir">
      <noframes>
        <p>Original location:
          <a href="www.myIsv.com/myWebSite/">http://www.myIsv.com/myWebSite/</a>
        </p>
      </noframes>
 </frameset>  
</html>

它工作得很好,但是像 PHP 会话变量这样的一些特性不再工作了!有人有纠正的建议吗?

编辑:这在 IE 和 Firefox 上都不起作用(没有插件)

谢谢

4

10 回答 10

4

会话与服务器域相关联。跨域使用框架集将导致各种破坏,因为这不是它的设计方式。

尝试使用 apache mod rewrite 创建“直通重定向”,规则中的“代理”标志([P])是您需要的魔术标志

http://httpd.apache.org/docs/1.3/mod/mod_rewrite.html上的文档

于 2008-09-02T06:18:34.380 回答
0

你什么意思?您是说当您从 www.mysmallwebsite.com 转到 www.myIsv.com/myWebSite/ 时,PHP 会话会丢失吗?

PHP 使用 ID(在服务器上生成的字母数字哈希)识别会话。ID 使用名为 PHPSESSID 的 cookie 或类似的东西在请求之间传递(您可以在浏览器的帮助下查看网站设置的 cookie ...在 Firefox 上,您有 Firebug + FireCookie 和出色的 Web Developer Toolbar .. . 使用它您可以毫不费力地查看 cookie 列表)。

所以... PHP 正在通过 PHPSESSID cookie 传递会话 ID。但是您可以将会话 ID 作为普通的 GET 请求参数传递。

所以当你放置丑陋域名的html链接时,假设是同一个PHP服务器(初始化了相同的会话),你可以这样放...

www.myIsv.com/myWebSite/?PHPSESSID=<?=session_id()?>

我有一段时间没有使用 PHP,但我认为这会起作用。

于 2008-09-01T20:26:20.903 回答
0

如果您直接点击http://www.myIsv.com/myWebSite/ ,会话变量是否有效?在我看来,服务器配置将决定会话是否有效。但是,如果您以某种方式在 www.mysmallwebsite.com 上启动会话(看起来您使用的不是 PHP,但也许您是),如果不编写一些后端,您将无法传输会话数据将会话从服务器移动到服务器的逻辑。

于 2008-09-01T20:27:10.340 回答
0

在脚本开头粘贴 session_start() ,看看是否可以再次访问变量。

于 2008-09-01T20:34:41.977 回答
0

它不起作用,因为客户端会话是每个域的。所有 cookie 都为 mysmallwebsite.com 保存,因此 myIsv.com 无法访问它们。

于 2008-09-01T20:36:21.783 回答
0

@pix0r www.myIsv.com/myWebSite/ -> 会话变量工作 www.mysmallwebsite.com -> 会话变量不起作用

@Alexandru 不幸的是,这不在同一个网络服务器上

于 2008-09-01T20:36:44.390 回答
0

你有什么浏览器/插件?可能是您的浏览器或其他一些软件(甚至可能是 Web 服务器)阻止来自http://www.myIsv.com/myWebSite/的会话在框架内工作,因为它位于不同的站点上,认为这是一次 XSS 攻击。

如果会话在http://www.myIsv.com/myWebSite/没有框架的情况下工作,您总是可以将http://www.mysmallwebsite.com重定向到丑陋的 url,而不是使用框架。

编辑:我刚刚在我的一个使用会话的网站上尝试了你的框架代码,Firefox 运行良好,我登录并保持登录状态,但 IE7 再次让我直接退出。

于 2008-09-01T20:38:19.843 回答
0

所以当你放置丑陋域名的html链接时,假设是同一个PHP服务器(初始化了相同的会话),你可以这样放...

www.myIsv.com/myWebSite/?PHPSESSID=<?=session_id()?>

从安全的角度来看,我真的真的真的希望这不起作用

于 2008-09-01T20:54:32.990 回答
0

您还可以在用户端设置一个 cookie,然后在重定向后直接检查该 cookie 的存在,如果您对友好的 URL 感到困扰,这意味着您不必在查询字符串中传递 PHPSESSID .

于 2008-09-01T23:28:53.960 回答
0

当人们到达@ www.mysmallwebsite.com 我只会重定向到http://www.myIsv.com/myWebSite/

<?php header('Location: http://www.myIsv.com/myWebSite/'); ?>

这就是我在 www.mysmqllwebsite.com/index.php 中的全部内容。
这样您就不必担心browserdr 的兼容性,或者让会话正常工作,只需进行重定向,就可以了。

于 2008-09-02T03:38:51.160 回答