同源政策
最初,它的含义是指,A网页设置的 Cookie,B网页不能打开,除非这两个网页"同源"
- 协议相同
- 域名相同
- 端口相同
如果我们想拿到Cookie
同源
设置document.domain
不同源
片段识别符(fragment identifier)
window.name
跨文档通信API(Cross-document messaging)
数据库
能长期存放据就是数据库
1.0
读-写-改数据库的数据
使用from表单,from表单一旦提交一定会刷新页面
我们的操作需要刷新页面,返回,再刷新
2.0
使用iframe结合from表单 把from的target写成iframe的name
少一步刷新页面返回,直接刷新就好了
3.0
- 用img请求
使用js按钮点击添加事件,创建图片标签,创建图片地址,图片加载成功取到数据库的数字操作html,加载失败弹出失败提示。
后台判断段请求成功,设置请求头为图片(response.setHeader()说明它是什么东西),修改数据库,返回图片地址,http200状态吗。
失败,返回状态吗400。
缺点:不能post
- 使用scrip请求
同上,还要把script写入body中,图片不需要。添加在页面中script标签会执行,先执行添加的script,再执行onload等事件监听,所以我们在script中写上成功或者失败,再监听script的onload之后remove掉这个script(a.currenttarget)
- 这种技术叫做 SRJ - Server Rendered JavaScript
4.0
jsonp
jsonp=script+callback=json+padding
由于同源政策,不同源的两个网页无法跨域,而script可以发出GET请求,我们就利用把服务器写成调用一个本地随机函数,然后我们就可以拿到数据了。具体原理如下:
- 请求方写script ,把script的src指向服务器,同时传递查询参数?callback
- 服务器根据查询参数,返回一个js脚本,内容是调用查询参数传过来的函数名,并传入需要的数据。
- 随后浏览器执行script脚本,
- 请求方就得到了他要的数据进行下一把操作,还有把无用的随机函数以及script删除掉
tips:约定
- 本地函数名->随机数
- callbackname->callback