我目前正在使用以下JavaScript将POST数据发送到我的网站:
example1.com
:
function buttonFunction() {
$.post("http://example2.com/core/file.php",{username:username, password:pword, coins:coins}, function(data) {
// Stuff
});
}
然后在file.php
example2.com
内,我有以下内容来保存和阅读会话:
<?php
namespace Penguin;
session_start();
if(isset($_SESSION['money_maker'])) {
echo "Cannot run.";
} else {
$_SESSION['money_maker'] = getmypid();
echo $_SESSION['money_maker'];
echo "Running.";
}
header('Access-Control-Allow-Origin: http://example1.com');
header('Access-Control-Allow-Credentials: true');
header('Access-Control-Allow-Methods: GET, PUT, POST, DELETE, OPTIONS');
header('Access-Control-Max-Age: 1000');
header('Access-Control-Allow-Headers: Content-Type, Authorization, X-Requested-With');
date_default_timezone_set('America/New_York');
error_reporting(0);
// REST OF THE PHP CODE
?>
正如我所看到的,我设置了一个会话(如果还没有设置),然后如果会话已经设置,脚本将回显“无法运行。”
但是,脚本永远不会回声“无法运行”。即使我在之前的AJAX运行中设置了会话。换句话说,会话未被“保存”。它总是输出“Running。”
HOWEVER ,在/var/lib/php5
中,似乎正在创建会话文件,但我的浏览器中没有会话cookie。因此,当我尝试在我的PHP文件中对$_SESSION['money_maker']
进行测试时,它总是输出它未设置。有什么帮助吗?
编辑1:
似乎问题出在AJAX请求中。当我尝试直接运行脚本时,会话保存完好(并且创建了cookie)。看起来当我尝试通过来自不同域的AJAX向PHP文件发送POST请求时,会话已设置(会话文件在/var/lib/php5
中创建),但会话的cookie未创建。
在这种情况下,是否有任何修复?