首先让我说Chrome中没有发生此问题。我一直只是在Chrome测试,但后来我决定在Firefox中试用,但发现我无法登录,因为我的JSON请求不对。
以下是我的电话:
self.user = $resource('http://my-site.com/a/account/login', {}, {
login : {
method: 'POST'
},
.
.
.
self.user.login({username: username, password: password}).$promise.then(function(response) {
self.model.loggedInUser = response;
deferred.resolve(self.model.loggedInUser);
}).catch(function(err) {
self.model.loggedInUser = undefined;
deferred.reject(err);
});
我还提到我有一个拦截器设置,但对于这个特定的调用它所做的只是以下内容:
'request' : function(config) {
var deferred = $q.defer();
deferred.resolve(config);
return deferred.promise;
}
因此,如果我查看Chrome网络标签,我会看到类似的内容:
{"username":"myName","password":"173A9F67AB4399D34561D96BFDB0E3B009C39232"}
没有什么不寻常的。
然而,这是我在Firefox中看到的:
{"username":""myName","password":"173A9F67AB4399D34561D96BFDB0E3B009C39232"}"
注意冒号后面和结束花括号后面的额外引号。这个不对。我似乎无法弄清楚造成这种情况的原因。特别是为什么它似乎只在Firefox中发生(我尝试过的只有2个浏览器是Chrome和Firefox)。
编辑:认为这可能有用,我的请求的Content-Type在两个浏览器中都是相同的:
application/json; charset=utf-8