【问题标题】:Session from iframe to ajax从 iframe 到 ajax 的会话
【发布时间】:2016-06-02 12:21:56
【问题描述】:

当我从域中的 iframe 创建会话,然后尝试从另一个 iframe 访问会话时它工作正常,但当我尝试通过 ajax 访问会话时它不起作用?


示例:

网站(iframe.php):

<?php 
header("Access-Control-Allow-Origin: *");
session_start();
if(isset($_POST['session'])){
    $_SESSION['session'] = $_POST['session'];
    echo "created session";
}else if(isset($_GET['want'])){
    //for ajax request
    die($_SESSION['session']);
}
?>
<form action="iframe.php" method="post">
SESSION VAL:<input name="session" value="<?php echo $_SESSION['session']?>" type="text"/><br>
<input type="submit"/>
</form>

HTML

<iframe src="iframe.php">

</iframe>
<br>SESSION FROM AJAX:
<div id="AJAX"></div>

AJAX

window.setInterval(function(){
    $.get( "iframe.php?want", function( data ) {
        $( "#AJAX" ).html( data );
    });
},1000);

See Fiddle

【问题讨论】:

  • 尝试在输出标题之前启动会话。
  • @Matt 没区别!

标签: javascript php ajax session iframe


【解决方案1】:

查看如何进行 CORS。很快,要让浏览器使用 ajax 发送会话,您必须在 xhr 中添加一些字段:

$.ajax({
  url : "https://crypter.co.uk/iframe.php?want",
  xhrFields : {
    withCredentials : true // <-- this
  },
  success : function( data ) {
    $( "#AJAX" ).html( data );
  }
});

而且您必须在服务器端允许此类请求,请参阅 this answer

【讨论】:

  • @Maximilian 你是什么意思?
  • 好吧,我在使用 Ajax 访问 Iframe.php 时创建了一个会话,然后成功创建了一个带有域的 Iframe,但没有会话。
  • @Maximilian 我请你做个小提琴
猜你喜欢
  • 2011-12-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-12-07
  • 2012-02-15
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多