Angular和Firefox告诉我,我的OAuth调用的响应是错误的,Fiddler告诉我

时间:2014-09-27 18:05:46

标签: javascript angularjs oauth response fiddler

我正在开发Cordova应用程序,需要通过我的Drupal后端通过OAuth进行身份验证。我试图获取请求令牌。我收到了200回复​​,而且我和Fiddler都能看到我得到了我的令牌:

Fiddler screenshot

我必须说我收到了来自Fiddler的以下信息:

  

响应已编码,可能需要在检查前进行解码。点击此处进行转换。

我点击解码后会截取屏幕截图。

但Angular正在输入$http的错误功能,Firefox告诉我响应是空的:

Firefox screenshot

Angular发送的请求标头告诉我的服务它接受application/jsonplain/text(以及*/*)。

所以有人能告诉我为什么Fiddler告诉我有回应,而Firefox和Angular告诉我其他情况?是解码吗?如果是这样,我希望我可以向$http添加一个函数来转换响应。但在该函数中,我可以看到data参数是"" (一个空字符串)。

更新

我认为原因是响应是在“chunked”中发送的。格式。 Angular的$http无法处理分块响应。现在找出为什么我的服务器/ Drupal正在为这么小的响应发送一个分块响应以及如何避免它。或者如何接受Angular中的分块响应。

更新2

我设法使用jQuery将此行为放在fiddle中。它调用的资源是不受保护的,所以我的问题与OAuth没什么关系(我以后会尝试重写它)。我不确定它是否是分块响应或CORS。

但是通过Fiddler,我可以看到我收到了包含所有数据的回复(当您浏览the resource时,您在浏览器中看到的数据相同。虽然您必须&#39} ;首先是Fiddler中的unchunk'

或者我的浏览器是否因为CORS而阻止了它,即使响应返回了?

1 个答案:

答案 0 :(得分:1)

如果您点击F12并查看浏览器的错误控制台,您会看到:

XMLHttpRequest cannot load http://www.gentlesite.be/drupal/api/nodes. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://fiddle.jshell.net' is therefore not allowed access.

Same-Origin-Policy阻止您的JavaScript从其他网站读取内容,除非另一个网站明确选择加入。有关Same-Origin-Policy的介绍,请参阅this post