【发布时间】:2015-06-11 23:10:08
【问题描述】:
振作起来,一个奇怪的 Angular / IIS 问题来了: 我创建了一个 Angular 1.4.0 应用程序,它在用户登录后使用 $cookies 来存储 oauth 访问令牌。
每当我将网站部署到 IIS 服务器(我尝试了 Azure 和远程服务器)时,在 localhost 上运行良好的东西都会失败。我不明白为什么。它始终是相同的过程,但保存/读取 cookie 似乎只能在本地工作。
后端(带有 API)在 Azure 上运行并且没有被触及。前端始终与此 Azure-API 连接,但仅在本地托管时才有效。
你有什么想法吗? 我的代码如下所示:
$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 未定义。我发誓(以旧神和新神)我不会删除它!
感谢每一个提示或帮助!
【问题讨论】:
-
能否添加一些http头数据?
-
如果 Api 在另一个域上,你应该检查你是否启用了 cors。
-
或者你可以检查http请求中的域。
标签: angularjs azure iis cookies localhost