关于跨域

359 阅读2分钟
// 同源策略
// 是一种约定,
// 它是浏览器最核心也最基本的安全功能,
// 如果缺少了同源策略,则浏览器的正常功能可能都会受到影响

// 一个完整的URL包括模式(或称协议)、服务器名称(或IP地址)、路径和文件名。

// 有三个标签允许跨域加载,浏览器不会限制
// <img src=""> 
// 但是,图片提供方可以通过判断请求url是否属于公司内部域名,来确定是否返回正确图片(比如百度图片设置,仅百度可见),以此来做防盗链处理 
// <img>可以用来打点统计,统计网站可能是其他域

// <link href=""> 
// 链接css

// <script src=""></script> 
// 链接js

// <link>和<script>可以使用cdn,cdn也是其他域

端口号不同(){
    // 需要通过后台proxy来解决,具体方式如下:
    // a、在发起方的域下创建proxy程序
    // b、发起方的js调用本域下的proxy程序
    // c、proxy将请求发送给接收方并获取相应数据
    // d、proxy将获得的数据返回给发起方的js
}
协议不同(){
     // 需要通过后台proxy来解决,具体方式如下:
    // a、在发起方的域下创建proxy程序
    // b、发起方的js调用本域下的proxy程序
    // c、proxy将请求发送给接收方并获取相应数据
    // d、proxy将获得的数据返回给发起方的js
}
域名不同(){
    // jsonp的核心则是动态添加<script>标签来调用服务器 提供的js脚本。
    // 使用script标签实现跨域访问,可在url中指定回调函数,获取JSON数据并在指定的回调函数中执行jquery实现jsop。
    // 缺点:只支持GET方式的jsonp实现,是一种脚本注入行为存在一定的安全隐患。如果返回的数据格式有问题或者返回失败了,并不会报错。

    // 2  iframe 是一个标签 后面有src属性
    // src调用其他的域

    // 3 服务器代理方式
    // 后端是不存在跨域的

    // 4 postmessage(对象,哪个域 不用具体写哪个文件)
    // (html5提供的一种新方式)


}
主域和子域(){
//     1、document.domain+iframe(只能解决情况1):
//     a、在发起方页面和接收方页面设置document.domain,并将值设为父域的主域名(window.location.hostname)
//     b、在发起方页面创建一个隐藏的iframe,iframe的源是接收方页面
//     c、根据浏览器的不同,通过iframe.contentDocument || iframe.contentWindow.document来获得接收方页面的内容
//     d、通过获得的接收方页面的内容来与接收方进行交互
//     这种方法有个缺点,就是当一个域被攻击时,另一个域会有安全漏洞出现。
//     src是不存在跨域的

}