jsonp前传--同源策略
Last updated on September 2, 2025 pm
欠了好久的文章(之前一直想着要好好学安全的,但是玩起来就忘我了=_=),今天终于有时间能写写了。
什么是同源策略
之前刚刚学习的时候,那是做一个前后端分离的项目,有一串json数据要从后端提取,前端用的语言是 vue,使用了8080端口,后端为php语言,80端口。后来发现这个数据愣是找不到,一番检查之下,发现是同源策略的问题。
那么问题来了,为什么会有同源策略呢?其实简单的思考一下就能想到,同一个后端接口,我能访问到,别人也能访问到,这就构成了一个很严重的数据安全问题。
浏览器的同源策略规定,不同域的客户端脚本在没有明确授权的情况下,不能读写对方的资源
那么概念理解完了,所谓的“同源”是什么意思呢?
- 相同协议
- 相同域名
- 相同端口号
同源策略允许的行为
- 链接 <a> 标签
- 重定向
- 嵌入资源
- <script src=””> 可以加载跨域的js 但是收到 cors 的限制
- link 标签, 可以加载跨域的css
- img video audio 等标签
- iframe 标签,可以加载跨域的页面,但是无法使用 js 读取其内容
- @font-face
- <object> <embed> <applet>
合法绕过同源策略
通常使用 CORS 方法
CORS - 跨域资源共享
需要后端服务器的支持,服务器在响应头中设置
Access-Control-Allow-Origin
字段
1 |
|
1 |
|
JSONP 方式 - 目前已经过时
- 利用 script 标签没有跨域限制的特性来实现。
- 客户端定义一个回调函数,然后通过script标签的src来请求一个 api地址,并带上回调函数名,服务器将数据包装在这个回调函数中返回,浏览器接收到后就会执行这个函数
- 缺点是只支持get请求,错误处理困难,并且存在严重的安全风险。
还有一些其他的方法如 : websocket 、代理服务器等。
jsonp前传--同源策略
https://blog.lixey.top/posts/f6aaed80/