支持自己,一个奇怪的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
未定义而失败。我发誓(由旧神和新人)我不删除它!
我感谢每一个提示或帮助!
答案 0 :(得分:-1)
您可以记录并检查从IIS获取的success.data.access_token
的值如果是会话cookie令牌,则必须检查IIS配置。
请参阅以下链接以验证会话Cookie设置
https://technet.microsoft.com/en-us/library/cc754725(v=ws.10).aspx