首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >jQuery Ajax POST请求SubDomain

jQuery Ajax POST请求SubDomain
EN

Stack Overflow用户
提问于 2013-09-17 17:29:26
回答 1查看 1.7K关注 0票数 0

我在SubDomains之间的Ajax请求上遇到了问题。

处理请求的PHP脚本位于account.domain.com/login

我还有很多其他的SubDomains,Ajax请求可以在每个SubDomain中调用。

这是我目前拥有的Javascript:

代码语言: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:

代码语言:javascript
复制
//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;
}

可能的问题是什么?谢谢。

EN

回答 1

Stack Overflow用户

发布于 2013-09-17 17:43:17

有很多选择,比如做$.post JSONP类型的请求或使用iframe,但我认为最简单的方法是改变工作流程:

您的本地JS将对本地URL执行ajax post,该URL将接受包含json数据的POST方法。此时,您的服务器代码将使用适当的数据向远程服务器执行HTTP POST,获取响应,并将其发送回调用js。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18846124

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档