Page 177 - AngularJS权威教程
P. 177
16.5 使用 JSON 157
Access-Control-Allow-Headers 1
如果设置了Access-Control-Request-Headers头,服务器必须在响应中添加同一个头。
我们希望服务器在可以接受这个请求时返回200状态码。如果服务器返回了200状态码,真正 2
的请求才会发出。
3
CORS并不是一个安全机制,只是现代浏览器实现的一个标准。在应用中设置安
全策略依然是我们的责任。
4
AngularJS中的非简单请求与普通请求看起来没有什么区别:
5
$http
.delete("https://api.github.com/api/users/1")
.success(function(data) {
// 数据 6
});
7
16.4 服务器端代理
实现向所有服务器发送请求的最简单方式是使用服务器端代理。这个服务器和页面处在同一 8
个域中(或者不在同一个域中但支持CORS),做为所有远程资源的代理。
可以简单地通过使用本地服务器来代替客户端向外部资源发送请求,并将响应结果返回给客 9
户端。
通过这种方式,老式浏览器不必使用需要发送额外请求的CORS(只有现代浏览器支持 10
CORS)也能发送跨域请求,并且可以在浏览器中采用标准的安全策略。
为了实现服务器端代理,需要架设一个本地服务器来处理我们所有的请求,并负责向第三方 11
发送实际的请求。
更多关于架设服务器端组件的内容请查看第18章。 12
16.5 使用 JSON 13
JSON是JavaScript Object Notation的简写,是一种看起来像JavaScript对象的数据交换格式。 14
事实上,当JavaScript加载它时,它确实会被当做一个对象来解析。AngularJS也会将所有以JSON
格式返回的JavaScript对象解析为一个与之对应的Angular对象。
15
例如,如果服务器返回以下JSON:
[ 16
{"msg": "This is the first msg", state: 1},
{"msg": "This is the second msg", state: 2},
{"msg": "This is the third msg", state: 1},
{"msg": "This is the fourth msg", state: 3} 17
]
当AngularJS通过$http服务收到这个数据后,可以像普通JavaScript对象那样来引用其中的 18