什么是跨域

什么是跨域?跨域意味着浏览器无法执行其他网站的脚本 。它是由浏览器的同源策略引起的,是由浏览器强加的安全限制 。所谓同源,就是域名、协议、端口都一样 。如果你不懂,那也没关系 。举个栗子:调用(非跨域)呼叫(  
什么是跨域?  
跨域意味着浏览器无法执行其他网站的脚本 。它是由浏览器的同源策略引起的,是由浏览器强加的安全限制 。  
所谓同源,就是域名、协议、端口都一样 。如果你不懂,那也没关系 。举个栗子:  
调用(非跨域)  
呼叫(不同主域名:123/456,跨域)  
已调用(不同的子域:abc/def,跨域)  
【什么是跨域】呼叫(不同端口:8080/8081,跨域)  
已调用(不同协议:http/https,跨域)  
请注意:虽然localhost和127.0.0.1都指向这台机器,但它们也属于跨域 。  
当浏览器执行一个javascript脚本时,它会检查该脚本属于哪个页面 。如果不是同源页面,就不执行 。  
解决方法:  
1、JSONP:  
关于如何使用我就不赘述了,但是注意JSONP只支持GET请求,不支持POST请求 。  
2.代理:  
例如,如果您需要调用,您可以编写一个接口在后端调用并获取返回值,然后将其返回给index.html 。这是一种代理模式 。相当于绕过浏览器,自然没有跨域问题 。  
3.PHP端修改表头(XHR2模式)  
在php界面脚本中添加以下两句话:  
标题(‘访问控制-允许-原始: * ‘);//允许从所有来源访问  
标题(‘访问控制-允许-方法:发布,获取’);//允许访问  
由于浏览器同源策略的限制 。同源策略是一种约定,是浏览器的核心和基本安全功能 。如果没有相应的策略,浏览器的正常功能可能会受到影响 。可以说Web是建立在同源策略的基础上的,浏览器只是同源策略的一种实现 。同源策略防止一个域中的javascript脚本与另一个域中的内容进行交互 。所谓同源性(即同域)是指两页有相同的协议、主机和端口号  
当请求url的协议、域名和端口中的任何一个不同于当前页面url时,它就是跨域的  
请求的页面url是否跨域(协议、域名、端口号相同)不同跨域协议(http/https)不同跨域主域名(test/百度)不同跨域子域(不同跨域端口号(8080/7001)  
[1]无法读取非同源网页的Cookie、LocalStorage和IndexedDB  
[2]无法联系非同源网页的DOM  
[3] AJAX请求不能发送到不同的源地址  
[1]设置document.domain,解决不能读取非同源网页的Cookie问题  
因为浏览器通过document.domain属性检查两个页面是否同源,只要设置了同一个document.domain,两个页面就可以共享Cookie(此方案仅限于同一个主域不同子域的跨域应用场景 。)  
[2]跨文档通信API:window.postMessage()  
调用postMessage方法,实现父窗口向子窗口发送消息(子窗口也可以通过这个方法向父窗口发送消息)  
它可以用来解决以下问题:  
页面和新窗口之间的数据传输它在上述三种情况下打开页面和嵌套iframe消息之间的跨域数据传输  
呼叫消息事件,收听对方发送的消息  
【3】JSONP  
JSONP是一种常见的服务器和客户端之间的跨源通信方法 。最大的特点是应用简单,兼容性好(兼容较低版本IE) 。缺点是只支持get请求,不支持post请求 。  
核心思想:网页通过添加一个向服务器请求JSON数据 。收到请求后,服务器将数据发送回具有指定名称的回调函数的参数位置 。  
(1)本地实现:  
jQueryajax:  
Vue.js  
【4】CORS  
CORS是跨来源资源共享的缩写 。它是W3C标准,属于跨来源AJAX请求的基本解决方案 。  
1.普通跨域请求:只有服务器端需要设置访问控制允许源


特别声明:本站内容均来自网友提供或互联网,仅供参考,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。