读取Set-Cookie标头信息并使用角度js维护用户会话

时间:2018-01-18 15:03:14

标签: c# angularjs session-cookies

我是棱角分明的新手。现在我有一个向服务器发送请求的应用程序。登录工作正常,服务器使用Set-Cookie字段中的会话信息以及其他数据进行响应。问题是我既不能使用角度js读取此信息,也不能执行任何其他需要登录的操作。我尝试过的解决方案之一是; This但它会给出以下错误:

  

对预检请求的响应没有通过访问控制检查:   “访问控制 - 允许 - 来源”的价值'响应中的标题必须   不是通配符' *'当请求的凭据模式是   '包括&#39 ;.因此不允许来源http://localhost:52000   访问。由...发起的请求的凭据模式   XMLHttpRequest由withCredentials属性控制。

当我尝试使用 ngCookies 模块时,每当我尝试访问有意义的会话数据时也会返回null,因为我无法首先访问该数据。我该如何解决这个问题?哦,也许值得一提的是服务器在不同的域上并使用C#。 任何帮助将受到高度赞赏。

以下是登录控制器:

appAuth.controller('ctlLogin', function ($scope, $http, $cookies, $rootScope) {
    $scope.userCreds = {};
    var config = { withCredentials: true };
    $scope.login = function () {
        $http.post(urlLogin, $scope.user, config).then(function onSuccess(response) {
            console.log('success');
            var session = $cookies.get('Set-Cookie');
            console.log(session);

        }, function onFailure(response) {
            console.log('failure');
        });
    };

2 个答案:

答案 0 :(得分:1)

首先,你应该阅读CORS。或者如您的错误中所述,如果您是从后端进行开发的人,您也可以允许请求的来源,然后您引用的帖子中的代码将起作用。 请看this

答案 1 :(得分:0)

当您提到您的服务器位于另一个域时,您必须在服务器中启用CORS请求。 您发出请求的服务器必须实施CORS才能从您的网站访问中授予JavaScript。您的JavaScript无法授予自己访问其他网站的权限。

https://enable-cors.org

https://developer.mozilla.org/en-US/docs/Web/HTTP/Server-Side_Access_Control