Angular的$ cookies仅适用于'localhost'

时间:2015-06-11 13:52:57

标签: angularjs azure iis cookies localhost

支持自己,一个奇怪的Angular / IIS问题即将来临: 我创建了一个Angular 1.4.0应用程序,在用户登录后使用$ cookies存储oauth访问令牌。

每当我将网站部署到IIS服务器时,localhost上的工作都很糟糕(我尝试过Azure和远程服务器)。我不明白为什么。它始终是相同的过程,但保存/读取cookie似乎只在本地工作。

后端(使用API​​)在Azure上运行并且未被触及。前端始终与此Azure-API连接,但仅在本地hostet时才起作用。

你知道吗? 我的代码如下所示:

$http({
    url: "/api/account/login",
    method: "POST",
    data: loginData,
    headers: {'Content-Type' : 'application/x-www-form-urlencoded; charset=utf-8'}
}).then(
    function (success) {
        $cookies.put('access_token', success.data.access_token);
        $cookies.put('refresh_token', success.data.refresh_token);

        // 'test' contains the correct token on localhost
        // 'test' is undefined whenever deployed to an iis
        var test = $cookies.get('access_token');

        deferred.resolve(results);
    },
    function (error) {
        deferred.reject({"loginError":-1})
    }
);

可能是IIS有一个特殊的cookie策略阻止cookie访问吗?

更新1: 请不要误解我的意思,我不希望IIS管理或跟踪我的会话状态。我只是想允许使用cookie来存储我的OAUTH访问令牌。

更新2: 有趣的事实:在登录过程后发送到服务器的第一个请求中,可以从cookie中读取访问令牌。之后的每个请求都会因为$cookies.access_token未定义而失败。我发誓(由旧神和新人)我不删除它!

我感谢每一个提示或帮助!

1 个答案:

答案 0 :(得分:-1)

您可以记录并检查从IIS获取的success.data.access_token

的值

如果是会话cookie令牌,则必须检查IIS配置。

请参阅以下链接以验证会话Cookie设置

https://technet.microsoft.com/en-us/library/cc754725(v=ws.10).aspx