6

我有一个简单的控制器,例如:

function MyController($scope, $http) {
    ...
    $http.post(url).success(function(data) {
            console.log(data)
         });
}
MyController.$inject = ['$scope', '$http'];

一切都按预期工作,但我有一个问题。出于安全原因,返回的 JSON 带有 /** */ 注释。使用 jQuery,我扩展了 $.ajax 对象以删除此注释,然后解析结果。我想用 AngularJS 实现同样的效果,并以某种方式告诉 $http 也从每个响应中删除评论。我想为我的整个应用程序执行此操作,并避免输入总是相同的。

任何想法我该怎么做?

4

2 回答 2

7

您将要转换所有$http响应。我以前没有这样做过,但相关文档如下。

转换请求和响应

请求和响应都可以使用转换函数进行转换。默认情况下,Angular 应用这些转换:

请求转换:

  • 如果请求配置对象的 data 属性包含对象,则将其序列化为 JSON 格式。

响应转换:

  • 如果检测到 XSRF 前缀,则将其剥离(请参阅下面的安全注意事项部分)
  • 如果检测到 json 响应,则使用 JSON 解析器对其进行反序列化

要在本地覆盖这些转换,请将转换函数指定为配置对象的 transformRequest 和/或 transformResponse 属性。要全局覆盖默认转换,请覆盖 $httpProvider 的 $httpProvider.defaults.transformRequest 和 $httpProvider.defaults.transformResponse 属性。

$http服务文档中阅读更多信息。

于 2012-07-31T15:11:59.150 回答
3

您可能希望从将 JSON 响应包装/** */为已由$http. 相反,在您的 JSON 响应前加上)]}',\n.

例如,如果您的 JSON 响应是:

['one','two']

然后,而不是返回:

/**['one','two']*/

只需返回:

)]}',
['one','two']

有关详细信息,请参阅http://docs.angularjs.org/api/ng.$http中的JSON 漏洞保护部分。

于 2012-10-05T20:08:46.580 回答