我需要让我的用户通过Iframe访问远程管理控制台软件。软件开发人员向我提供了一个包含在我的页面中的Curl代码,这段代码运行良好......除了在使用某些特定浏览器时出现问题。
实际上,我可以使用任何浏览器访问仪表板,但是当我想访问某个特定的远程页面时(通过点击仪表板本身中的相关链接),我收到一条来自远程服务器的消息,他说我必须登录以查看这些页面。这很奇怪,因为我已经登录,否则无法看到仪表板。
使用IE和Safari时会出现问题但使用Chrome或Firefox时却没有...我的网站和远程服务器不使用SSL ...现在我们很多天都在调查排除故障但没有成功。我在不同位置使用Window和Ubuntu下的不同PC进行测试......那太疯狂了......: - (
使用的代码下方......有人知道为什么我只能使用某些特定的浏览器来解决问题?
<?php
$api_key = '123-my-api-key-456';
$admin_email = 'my@email.com';
?>
<?php
$response_raw = null;
$api_url = "http://www.remote-server.com/rest/?api_key=$api_key&method=get_login_credentials&email=$admin_email";
if (function_exists('curl_init')) {
$cs = @curl_init($api_url);
if ($cs) {
@curl_setopt ($cs, CURLOPT_RETURNTRANSFER, 1);
$response_raw = @curl_exec ($cs);
@curl_close ($cs);
}
}
if (!$response_raw)
$response_raw = file_get_contents($api_url);
$response_json = json_decode($response_raw, true);
$login_hash = $response_json['data']['login_hash'];
$user_id = $response_json['data']['user_id'];
if ($_REQUEST['mbm_gotourl'])
$iframe_url = $_REQUEST['mbm_gotourl'] . (strpos($_REQUEST['mbm_gotourl'], '?') === false ? "?" : "&") . "login_hash=".$login_hash."&user_id=".$user_id."&mbm_iframe=1";
else
$iframe_url = "http://www.remote-server.com/admin.php?custom-language=FR&login_hash=".$login_hash."&user_id=".$user_id."&mbm_iframe=1";
if ($login_hash && $user_id) {
?>
<iframe id='mbm_be_frame' src='<?php echo $iframe_url;?>' width='944' scrolling='no' frameborder='0' ></iframe>
<script type='text/javascript' src='http://www.remote-server.com/mbm-be.js'></script>
<?php
}
?>
答案 0 :(得分:0)
好的,我终于找到了问题的原因。问题来自跨域cookie,由Safari以不同方式处理。这个问题给了我一些让我解决问题的线索:
Setting cross-domain cookies in Safari
所以在实践中,这不是卷曲问题,而是cookie问题......