zoukankan      html  css  js  c++  java
  • 关于跨域,同源策略小节

    scheme://hostname:port
     
     
    同域  就是schem  hostname   port  都一样
    跨域  就是这三个里有一个不一样就是跨域
     
    在自己的域名里请求其他域的服务器,这个就叫做跨域请求
     
    同源策略:
    浏览器厂商为了安全强制添加的一种安全策略,也就是不同域之间无法相互访问
     
    并不是所有的跨域请求都会受到同源策略的限制,只有当浏览器认为这个跨域请求构成安全威胁的时候才会激活同源策略限制
    例子:iframe 可以加载到其他域名的资源,但是无法操作不同域的DOM
               link:会把资源按照指定格式导入到当前页,除了链接css其他的都只能链接本域名内的
               script  任何情况都不受同源策略的限制(同源策略是无视script标签的),但是会把加载到的内容强制当成脚本来执行
               img  任何情况下都不受同源策略的限制,但是会把加载到的内容强制当成图片来显示
     
     
    jsonp原理:就是利用script标签不存在域的概念(可以在自己的网页中引入任何域名下的js),我们通过script的src属性向后台发送一个请求,并且把一个函数的名字xxxx传递给后台(一般来说都是?callback=xxxx)传递给后台
    后台会把传递进来的参数进行解析,获取到方法名xxxx,并且执行这个方法,把所有需要给你的数据传递给xxxx
    我们xxxx中定义的形参data中其实就已经存储了我们需要的数据,接下来在做数据解析,数据绑定即可
     
    jsonp返回的数据有固定的格式
    方法名+(+json数据+);
    json padding   ---->往json数据前面填充了一个方法名,所以叫做json-padding  也就是jsonp
    注意事项:
    1、只能请求接口  (跨域交互有两种形式:接口形式   页面通信形式)
    2、只能是http的get方法,get系有的特点jsonp全有
    3、安全性问题,使用jsonp的接口必须是安全系数非常低的接口
    4、传过去的方法名,必须是全局方法
     
     
    第二种跨域方式:CORS(跨域资源共享)(接口形式的)
    使用跨域资源共享必须server端强配合
    必须加上响应头Access-Control-Allow-Origin
    这个响应头有两个值(*和指定域名)*代表所有的跨域请求我都允许
    如果想携带coolie的话server必须添加
    把Access-Control-Allow-Origin设置为true
     
     
    这两个跨域方法的区别
    1 、jsonp不算是ajax,而是cors是ajax
    2、发送jsonp请求,server必须严格返回jsonp的格式,而cors必须加上指定的响应头信息
    3、jsonp只能是get方法,而cors则是ajax支持的它都支持
    4、相比较之下cors比jsonp安全
    5、jsonp永远是异步的,而cors可同步可异步
    6、jsonp没有兼容性,而cors不支持ie6和7
     
     
    它们的共同点
    1、都是跨域请求数据
    2、都是接口形式的跨域请求
     
     
     
     个人整理
     转载请标明出处
     
  • 相关阅读:
    UNION ALL
    jquery.validate的使用
    通过匹配绑定select option的文本值 模糊匹配
    .net 时间操作[摘抄]
    判断Table表中是否含有某一列
    将数组,表的某一列转换为string字符串的方法
    选出某一列不重复,某一列作为选择条件,其他列正常输出(摘抄)
    SQLite 解决:Could not load file or assembly 'System.Data.SQLite ... 试图加载格式不正确的程序(转)
    金山毒霸占用80端口
    DropDownList 绑定数据后 插入一条不属于表中的数据
  • 原文地址:https://www.cnblogs.com/js-wxf/p/5670451.html
Copyright © 2011-2022 走看看