当我从域中的 iframe 创建 session ,然后尝试从另一个 iframe 访问该 session 时,它工作正常,但是当我尝试通过 ajax 访问该 session 时,它却不起作用?
示例:
网站(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
最佳答案
查找有关如何执行 CORS 的信息。很快,要使浏览器使用 ajax 发送 session ,您必须向您的 xhr 添加一些字段:
$.ajax({
url : "https://crypter.co.uk/iframe.php?want",
xhrFields : {
withCredentials : true // <-- this
},
success : function( data ) {
$( "#AJAX" ).html( data );
}
});
而且您必须在服务器端允许这样的请求,请参阅 this answer .
关于javascript - 从 iframe 到 ajax 的 session ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35530531/