我在SubDomains之间的Ajax请求上遇到了问题。
处理请求的PHP脚本位于account.domain.com/login
我还有很多其他的SubDomains,Ajax请求可以在每个SubDomain中调用。
这是我目前拥有的Javascript:
$.ajax({
type: "POST",
url: "http://account.domain.com/login",
data: "username=" + username + "&password=" + password + auto,
crossDomain: true,
}).done(function(data){
alert(data);
//window.location.replace(data);
});问题是,如果我在另一个非account.domain.com的子域中调用它,脚本就会失败。(不显示警报)。
我已经检查了篡改数据,以查看请求是否已经发出,并且确实是,使用响应头状态200。
PHP:
//Process Login
if(count($_POST)){
$username = isset($_POST['username']) ? $_POST['username'] : false;
$password = isset($_POST['password']) ? $_POST['password'] : false;
$auto = isset($_POST['auto']) ? true : false;
$main->login($username,$password,$auto);
if($main->has_error()){
$_SESSION['NoteMsgs'] = $main->error();
$return = $main->link['login'];
}else{
//PHPBB Login
// Start session management
$user->session_begin();
$auth->acl($user->data);
$user->setup();
if($user->data['is_registered']){
//User is already logged in
}else{
$result = $auth->login($username, $password, $auto);
if ($result['status'] == LOGIN_SUCCESS){
//User was successfully logged into phpBB
}else{
//User's login failed
}
}
if(isset($_POST['returnUrl'])){
$return = filter_var($_POST['returnUrl'], FILTER_VALIDATE_URL, FILTER_FLAG_PATH_REQUIRED);
if($return == $main->opt['http_root'] or $return == $main->opt['http_root'].'/' or $return == $main->link['login'] or $return == $main->link['login'] .'/'){
$return = $main->link['return'];
}
}else{
$return = $main->link['return'];
}
}
echo $return;
exit;
}可能的问题是什么?谢谢。
发布于 2013-09-17 17:43:17
有很多选择,比如做$.post JSONP类型的请求或使用iframe,但我认为最简单的方法是改变工作流程:
您的本地JS将对本地URL执行ajax post,该URL将接受包含json数据的POST方法。此时,您的服务器代码将使用适当的数据向远程服务器执行HTTP POST,获取响应,并将其发送回调用js。
https://stackoverflow.com/questions/18846124
复制相似问题