当前位置: 首页 > 科技观察

跨域你应该知道了

时间:2023-03-23 11:20:45 科技观察

前言转眼又到了秋招季。几次笔试后,反复被问到如何实现跨域。说实话,之前都是纸上谈兵,没有一个项目需要跨域,我什至觉得这个东西没有意义。直到今天,在项目中遇到了跨域的问题,看了很多资料才明??白跨域的普遍性和意义。本文收尾,整理一下自己的所得。转自个人博客:关于跨域什么是跨域一般来说,如果你在开发中需要进行跨域操作(发送请求获取非同源网站的数据),一般来说,你可以在浏览器控制台看到结果是:XMLHttpRequestcannotloadhttp://external-domain/service。请求的资源上不存在“Access-Control-Allow-Origin”标头。因此,不允许访问来源“http://my-domain”。同源策略说到跨域,就不得不提到“同源策略”。同源策略是网络浏览器针对恶意代码采取的措施。为了防止世界被毁灭,保护世界和平,Web浏览器采用同源策略,只允许脚本读取与其所属文档具有相同源的窗口。和文档属性。那么,如何判断文件来源是否相同呢?很简单,看三部分:协议,主机,端口号。只要其中一个部分不同,就不是同一来源。跨域场景来自home.example.com的文档中的脚本从developer.example.com加载的文档中读取属性。来自home.example.com文档的脚本读取在text.segmentfault.com加载的文档的属性。如何跨域设置domain属性对于上面应用场景的第一种情况,可以设置Document对象的domain属性。但设置时使用的字符串必须有一个有效的域前缀或本身。PS:域值中必须有一个点。PS:域不能由松变紧。//初始值"home.example.com"document.domain="example.com";//OKdocument.domain="home.example.com";//NO,不能由松变紧document.domain="example";//NO,必须有一个点document.domain="another.com";//NO,必须是有效的域名前缀或本身JSONPJSONP由两部分组成:回调函数和数据。原理:通过动态的