以下都是自己看了些资料还有博客什么的结合起来的理解,如果有不对或者有问题的地方请指出,多谢了
之前在面试的时候也被问起过,当时是一点都没听说过,后来就是把这个问题给记录了,不过没细究,这回偶然需要解决一个问题,大致的问题就是拿到一个优酷视频的一个地址,这个地址就是在视频下面点击分享里有的,是<embed>的一组标签,然后我网上找了一下,找到了优酷视频的解决办法,我试着用ajax去获取一个优酷地址上的时候,提示错误,代码如下,
$.ajax({
type: 'GET',
url: youkuUrl2,
dataType : "json",
error:function(){
console.log("出现错误");
},
success:function(datas){
console.log(datas);
},
});
XMLHttpRequest cannot loadhttp://api.stackoverflow.com/1.1/stats. No 'Access-Control-Allow-Origin' header is present on the requestedresource. Origin 'null' is therefore not allowed access
百度了下,这个其实就是跨域访问的错误,再来介绍下有关跨域访问的东西。同源策略阻止从一个域上加载的脚本获取或操作另一个域上的文档属性。也就是说,受到请求的 URL 的域必须与当前 Web 页面的域相同。然后再提两个相关的东西。
1.在浏览器中不能直接来跨域访问,而在服务器端没有跨域安全限制
2.同源策略不阻止动态脚本元素插入,脚本访问可以跨域
所以一个方法就是后台处理,一个是前台处理,下面就在说说下前台这边的处理。
一、客户端
在写的页面中有时候会引用类似jQuery的库,我们会使用一些cdn啥的,或者是官网提供的一个地址,比如<scriptsrc