前端跨域
前端跨域要求当前属于属于通例支配(AJAX)
- json-padding(纯前端跨域)
浏览器同源战略,平常情况下,会致使XHR没法跨域。
<script type="text/javascript" async="" src="http://www.google-analytics.com/ga.js"></script>
script
标签能够跨域加载js剧本。。script
标签加载的剧本文件会马上实行。
当地剧本预先定义一个callback(data)
函数,然后向支撑jsonp的效劳提议一个要求,效劳器平常会返回callback(data)
的情势,如许就变相取得并支配数据。
平常情势<scripts src="http://www.*.com?callback=callback"></script>
- CORF
CORF是跨站资源共享的简称,详细细节过量,概况能够参考
http://www.html5rocks.com/en/tutorials/cors/
https://developer.mozilla.org/en-US/docs/HTTP/Access_control_CORS
假如只是简朴的猎取部分数据的话,支配并不难,下面是Express的一个简朴完成(REST API端)
app.all('*',function(req,res,next){
res.set({
'Access-Control-Allow-origin' : '*',
'Access-Control-Allow-Headers' : 'X-Requested-With',
'Access-Control-Allow-Methods' : 'GET'
}) ;
next();
});
我用的http://127.0.0.1:1337作为静态文件效劳器,从http://127.0.0.1:1336 REST API猎取数据。
var xhr = new XMLHttpRequest();
xhr.open('GET','http://127.0.0.1:1336/blog',true);
xhr.addEventListener('load',function(e){
console.log(this.response);
})
xhr.send();
Access-Control-Allow-origin
属于必填项,*
属于通配符,假如没有,就会报错XMLHttpRequest cannot load http://127.0.0.1:1336/blog. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://127.0.0.1:1337' is therefore not allowed access.
。