Access-Control-Allow-Origin
Access-Control-Allow-Credentials
Access-Control-Expose-Headers
设想这样一种情况:A网站是一家银行,用户登录以后,又去浏览其他网站。如果其他网站可以读取A网站的 Cookie,会发生什么?
很显然,如果 Cookie 包含隐私(比如存款总额),这些信息就会泄漏。更可怕的是,Cookie 往往用来保存用户的登录状态,如果用户没有退出登录,其他网站就可以冒充用户,为所欲为。因为浏览器同时还规定,提交表单不受同源政策的限制。
由此可见,”同源政策”是必需的,否则 Cookie 可以共享,互联网就毫无安全可言了。
<script src="http://127.0.0.1:8022/api/"></script>
可以正常访问http://127.0.0.1:8022/api/
,并取得返回值http://127.0.0.1:8022/api/
的服务器的该视图处返回一个js函数名的字符串,比如:func(data)
http://127.0.0.1:8022/api/
,并获取返回值data用于处理 <script src="http://127.0.0.1:8022/api/?callback=func"></script>
<script>
fucntion func(data){
alert(data)
}
</script>
url
中
callback=list
表明返回的函数名应当是list_=1454376870403
为特定的标识,无标识则无法通过验证dataType: "jsonp"
指定当前ajax为跨域请求,jQuery在处理ajax时会自动生成script标签,然后删除,即可完成跨域请求jsonp: "callback"
这是由服务端定制好的jsonpCallback: "list"
这是指定返回的函数名为list,应与url中一致,
success:function(){}
$(".second").click(function () {
$.ajax({
url: "http://www.jxntv.cn/data/jmd-jxtv2.html?callback=list&_=1454376870403",
dataType: "jsonp",
jsonp: "callback",
jsonpCallback: "list",
success: function (data) {
console.log(data.data);
$.each(data.data, function (i, weeklist) {
var content_str =
'<div id="' + i +
'"><h3>' + weeklist.week +
'</h3>'+
'</div>';
$(".content").append(content_str);
$.each(weeklist.list, function (j, item) {
var list_str =
'<p style="margin-left: 20px">' + item.time.slice(0, 2) + ':' + item.time.slice(2, 4) + '----<a href="' + item.link +
'">' + item.name +
'<p>';
$("#"+i).append(list_str)
});
})
}
})
})
Access-Control-Allow-Origin
(必选)
www.example.com www.example2.com
Access-Control-Expose-Headers
(可选)
Cache-Control
Content-Language
Content-Type
Expires
Last-Modified
Pragma
Access-Control-Allow-Credentials
(可选)
Access-Control-Allow-Methods
(options请求可选)
Accept
Accept-Language
Content-Language
Last-Event-ID
Content-Type,但仅能是下列之一
application/x-www-form-urlencoded
multipart/form-data
text/plain