Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/444.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript AngularJS:装饰$http_Javascript_Ajax_Angularjs - Fatal编程技术网

Javascript AngularJS:装饰$http

Javascript AngularJS:装饰$http,javascript,ajax,angularjs,Javascript,Ajax,Angularjs,我有一个简单的控制器,比如: function MyController($scope, $http) { ... $http.post(url).success(function(data) { console.log(data) }); } MyController.$inject = ['$scope', '$http']; 一切正常,但我有个问题。出于安全原因,返回的JSON用/***/注释。使用jQuery,我扩展了$.aja

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

function MyController($scope, $http) {
    ...
    $http.post(url).success(function(data) {
            console.log(data)
         });
}
MyController.$inject = ['$scope', '$http'];
一切正常,但我有个问题。出于安全原因,返回的JSON用/***/注释。使用jQuery,我扩展了$.ajax对象,以删除这些注释,然后解析结果。我想用AngularJS实现同样的效果,并告诉$http从每个响应中删除注释。我想在我的整个应用程序中都这样做,并且避免键入总是一样的内容


有什么办法吗?

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

转换请求和响应

可以使用transform转换请求和响应 功能。默认情况下,Angular应用以下变换:

请求转换:

  • 如果请求配置对象的数据属性包含一个对象, 将其序列化为JSON格式
响应转换:

  • 如果检测到XSRF前缀,请将其去除(请参阅安全注意事项 (下节)
  • 如果检测到json响应,则使用 JSON解析器
要在本地重写这些转换,请指定 transform用作transformRequest和/或transformResponse 配置对象的属性。全局覆盖默认值的步骤 转换,重写$httpProvider.defaults.transformRequest并 的$httpProvider.defaults.transformResponse属性 $httpProvider


阅读

中的更多内容您可能希望从将JSON响应包装在
/***/
中切换到
$http
已经支持的现成响应。相反,在JSON响应前面加上
)]}',\n

e、 g.如果您的JSON响应是:

['one','two']
然后,不是返回:

/**['one','two']*/
只需返回:

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

有关详细信息,请参阅中的JSON漏洞保护部分。

很抱歉接受延迟。事实上,我遗漏了你提到的文档中的一个重要部分(我在问之前读过)。无论如何,现在我做了一个拦截器,由于你的提示,它可以转换我的请求。@Christian,你能把你的转换作为一个例子吗?谢谢。事实上我已经看到了。不幸的是,我无法如此轻松地更改它,因为我需要保持向后兼容。这将需要很多我目前没有的关注。这件事我以后再说。无论如何,我投了更高的票,因为其他人应该会看到你的答案是非常好的。