[英]AngularJS: decorating $http
我有一个简单的控制器,如:
function MyController($scope, $http) {
...
$http.post(url).success(function(data) {
console.log(data)
});
}
MyController.$inject = ['$scope', '$http'];
一切都按预期工作,但我有一个问题。 出于安全原因,返回的JSON用/ ** * /注释。 使用jQuery,我扩展了$ .ajax对象以删除此注释,然后解析结果。 我想用AngularJS实现同样的目的,并以某种方式告诉$ http来删除每个响应中的注释。 我想为我的整个应用程序执行此操作,并避免键入始终相同。
我有什么想法可以做到这一点?
您将要转换所有$http
响应。 我之前没有这样做,但相关文档如下。
转换请求和响应
可以使用变换函数来变换请求和响应。 默认情况下,Angular应用这些转换:
请求转换:
- 如果请求配置对象的data属性包含对象,请将其序列化为JSON格式。
响应转换:
- 如果检测到XSRF前缀,请将其删除(请参阅下面的“安全注意事项”部分)
- 如果检测到json响应,则使用JSON解析器对其进行反序列化
要在本地覆盖这些转换,请将转换函数指定为config对象的transformRequest和/或transformResponse属性。 要全局覆盖默认转换,请覆盖$ httpProvider的$ httpProvider.defaults.transformRequest和$ httpProvider.defaults.transformResponse属性。
您可能希望从/** */
中将JSON响应包装为$http
开箱即用。 相反,在您的JSON响应前加上)]}',\\n
。
例如,如果您的JSON响应是:
['one','two']
然后,而不是返回:
/**['one','two']*/
简单回归:
)]}',
['one','two']
有关详细信息,请参阅http://docs.angularjs.org/api/ng.$http中的JSON Vulnerability Protection部分。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.