【问题标题】:Loading a new HTML page with $http request使用 $http 请求加载新的 HTML 页面
【发布时间】:2016-01-13 18:33:07
【问题描述】:

我正在处理令牌,并且对于每个 HTTP 请求,令牌都会添加到标头中,以便服务器可以判断用户是否已登录。

因此,我无法重定向到特定 URL 并检查令牌,因为令牌不会添加到标题中。

是否可以从 http 请求加载新的 HTML 页面?每次服务器响应时,我都会得到 HTML 页面的代码。我认为 Angular 不会重新加载新的传入页面。

编辑:这是一些代码

添加到每个 http 请求的代码

// ===================================================
// application configuration to integrate token into requests
// ===================================================
.factory('AuthInterceptor', function($q, $location, AuthToken) {

var interceptorFactory = {};

// this will happen on all HTTP requests
interceptorFactory.request = function(config) {

    // grab the token
    var token = AuthToken.getToken();

    // if the token exists, add it to the header as x-access-token
    if (token) {
        config.headers['x-access-token'] = token;
    }

    return config;
};

// happens on response errors
interceptorFactory.responseError = function(response) {

    // if our server returns a 403 forbidden response
    if (response.status == 403) {
        AuthToken.setToken();
        $location.path('/login');
    }
    // return the errors from the server as a promise
    return $q.reject(response);
};
    return interceptorFactory;

});

我正在使用 ui 路由。我有网站的前端和后端。因此,当用户从前端登录时,front-end.html 消失,而 back-end.html 被加载。但是 angular 只是读取 back-end.html 代码。

// function to handle login form
vm.doLogin = function() {
    vm.processing = true;
    //clear the error
    vm.error = '';

    Auth.login(vm.loginData.email, vm.loginData.password)
        .success(function (data) {
            vm.processing = false;
            // if a user successfully logs in, redirect to main application
            if (data.success)
                return $http.get('/account');
                //Here is where a user logs in and i redirect them to the backend of the site. But the response is the HTML code of the page. I want that page to load.
            else 
                vm.error = data.message;
        });
};

【问题讨论】:

  • 您的代码在哪里?你是什​​么意思令牌不会被添加到标题?您是否存储令牌客户端并将其添加到$http.defaults.headers.common
  • 已更新相关代码
  • @StevenR 您是否尝试修复跨站点脚本?
  • @pratikwebdev 不,我实际上是在尝试将我的网站分成 2 个不同的部分。前端和后端,但后端有令牌检查以查看用户是否登录以继续。所以我不能直接去后端 URL 因为那他们就没有令牌了。
  • @StevenR 您可以尝试将token 保存在会话变量中而不是request header 并在后端验证相同。我的 2 美分。

标签: javascript html angularjs


【解决方案1】:

【讨论】:

  • 这不能回答问题,更适合作为对问题的评论——它可能会吸引反对票。
最近更新 更多