【问题标题】:read Set-Cookie header information and maintain user session using angular js读取 Set-Cookie 标头信息并使用 Angular js 维护用户会话
【发布时间】:2018-06-27 16:51:47
【问题描述】:

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

对预检请求的响应未通过访问控制检查: 响应中“Access-Control-Allow-Origin”标头的值必须 当请求的凭据模式为时,不是通配符“*” '包括'。因此不允许使用原点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');
        });
    };

【问题讨论】:

  • 我这部分问题可能会丢失......为什么问题以“and another sample server access:”结尾?之后是否应该包含更多文字??
  • 谢谢,不是。

标签: c# angularjs session-cookies


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

    https://enable-cors.org

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

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-10-20
    • 1970-01-01
    • 2014-12-08
    • 2019-03-26
    • 2020-02-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多