繁体   English   中英

AngularJS:装饰$ http

[英]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属性。

阅读$http服务文档中的更多内容。

您可能希望从/** */中将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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM