跨域(重要)

同源策略是浏览器的安全功能,限制不同源之间的数据访问。CORS是一种允许服务器放宽限制的方法,通过设置响应头允许特定源进行数据交互。而JSONP是早期解决跨域问题的技术,利用script标签的特性,通过回调函数传递数据,但仅限于GET请求且无法获取状态码。CORS相比JSONP更安全且支持更多HTTP方法。
摘要由CSDN通过智能技术生成

同源策略

浏览器故意设计的一个功能限制,不同源的页面之间,不能互相访问数据。
同源策略限制的是数据访问,引入并不限制

同源

源:

window.origin 或 location.origin 可以得到当前源
源 = 协议 + 域名 + 端口号
两个URL:
协议 +域名 + 端口号 完全一致,这两个URL就是同源的

同源策略

浏览器规定:

如果JS运行在源A里,只能获取源A的数据,不能获取源B的数据,即不允许跨域
目的是防止其他开发者获取/篡改你的数据

CORS

突破浏览器限制的一个方法
A和B都是我的网站,我只需要在A的响应头里添加B的网站,B就可以进行数据访问了

简单请求语法

'Access-Control-Allow-Origin', 'http://B.com' // 设定特定同源
request.headers['referer'] // 谁访问我,谁就是同源

高级请求语法请看mdn

JSONP

IE时代的妥协
··········
A将数据写到A.js
B用script标签引用A.js
B事先定义好window.xxx({A: […]})函数,然后执行
然后B就能通过window.xxx获取到数据了
window.xxx就是一个回调

JSONP是什么

在跨域的时候,由于当前浏览器不支持CORS,必须使用另外一种方式跨域。于是需要请求一个JS文件,这个JS文件会执行一个回调,回调里面就有我们的数据。–回调的名字可以随机生成一个随机数,以callback方式把参数传给后台,后台把函数返回给我们并执行。
创造一个script请求JS,JS会把数据夹带过来,然后再拿到这个JS的数据。

JSONP优点

兼容IE
可以跨域

JSONP缺点

读取不到状态码 - - 由于它是script标签,所以它读不到ajax精确的状态,拿不到状态码,也不知道响应头是什么,它只知道成功和失败
只能发get请求 - - 由于它是script标签,所以它只能发get请求

其他疑问

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Supernova_gu

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值