同一原产地政策
我们有时会因为违反同源策略而在操作中出错,同源策略是浏览器为限制不同来源的文档之间的交互而实施的一种安全措施。页面的来源由其协议、主机和端口号定义。来源相同的资源可以完全相互访问。但是,如果它们有不同的来源,访问将被拒绝。
由于域名不同,http://www.a.com/a.js和http://www.b.com/a.js不能互相访问
如果以上两个域名想要互相访问,就需要跨域请求。一般同源政策规定允许跨源写作,但不允许跨源阅读。这意味着同源策略不会阻止数据被写入,而只会禁止他们从域中读取数据或对从他们的域中收到的响应做任何事情。
跨域请求的方法
JSONP
JSONP,称为带有填充的JavaScript对象表示,是一种通过在HTML页面中使用脚本标签来加载不同来源的代码来实现跨域请求的方法。JSONP依赖于脚本标签可以来自不同来源的事实。当浏览器解析脚本标记时,它获取脚本内容并在当前页面的上下文中执行它。通常,服务会以HTML或数据格式(如XML或JSON)返回一些数据。但是,当向启用JSONP的服务器发出请求时,它会返回一个脚本块,该脚本块在执行时会调用页面指定的回调函数,并提供实际数据作为参数
注意:它没有相同的源码点限制,即使在旧浏览器中也有很好的兼容性,但是JSONP只能用来执行跨域GET请求,服务器必须明确支持JSONP请求。
CORS方法
它为服务器提供了一种机制,告诉浏览器它可以请求域A从域b读取数据。这是通过在响应中包含一个新的访问控制允许源HTTP头来实现的。当浏览器收到来自跨源源代码的响应时,它将检查CORS头部。如果响应头中指定的源点与当前源点匹配,则允许对响应进行读取访问,否则将报告错误。
与jsonp相比,CORS具有以下优势:
它不仅支持GET请求,还支持POST等其他请求
它可以使用XMLHttpRequest发送和接收数据,并且有更好的错误处理机制
总结:以上就是本文的全部内容。希望对大家的学习有帮助。谢谢你的支持。