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

因为一个跨域请求,差点丢了工作

时间:2023-03-16 13:40:10 科技观察

我叫小枫,是Windows帝国的一名普通上班族。今天,我加入了一家浏览器公司,公司的主要业务是为人类提供上网服务,而我的职位是负责执行JavaScript代码。在早上的晨会上认识了负责网络连接的老白。所有的网络请求都要找他帮忙,小黑负责存储管理。Cookies、LocalStorage、SessionStorage之类的都在他的掌控之中。哦,差点忘了,还有一个妹子,小雪,负责网页的渲染。然后主管安排了我的工作:老白从网上检索网页后,我交给小雪分析渲染,遇到网页中的JavaScript代码,我就处理执行这些代码。听了主管的安排,心里很开心,因为工作需要密切配合,主管把我和小雪的工位安排在了一起,想想都开心^_^||坐下没多久,我就主动了站起来陪小雪聊天。“小雪,你平时上班都做什么?”小雪转身,“我负责解析老白给我的HTML文件,构建DOM树,然后拿到CSS文件构建CSSOM树,最后绘制网页。”我似懂非懂地点了点头,正要继续找话题,老白走了过来。“小雪,回来工作吧,这是我刚拿到的网页文件,我们赶紧处理吧。”“你上了。”看来这次是我大显身手的机会了,拿到里面的代码开始干活,很快就完成了,继续交给小雪完成后面的工作。在这way,你来我往来回转了几圈,觉得有些麻烦:“小雪,要不你先处理完,最后我把tags里的代码全部执行完,这样“那可不行,你在执行JavaScript的时候,可能会修改我建的DOM树的内容,一定要按顺序来,不然就麻烦了。”小雪一本正经地说。没办法。而是听她的,就这样,我们一直有条不紊地合作着,时不时的去老白发数据,小黑要cookies,我们很快就认识了大家。就这样过了几天,没想到平静的工作风起云涌……跨域禁言这天拿到一段代码,需要请求一段数据。老规矩,我准备请求参数找老白,准备让他发给我。没想到,老白一看吓了一跳:“这是跨域请求,不能发送!”我愣了一下,“跨域请求?什么鬼?”老白指着我给的请求参数说:“你看你给的请求URL,和你现在处理的网页的URL,不是一家,域名不一样。”“你不管他们是不是一家人,发出去就行了,快点,我还在等”“不,你知道你之前的那个人是怎么离开这个位置的吗?因为他向公司发起了调动请求真银行网站在假网银网站执行javascript,输了对方的钱,就因为这个被老板开除,平日要不是和老板亲近,说不定连坐下来的都说不定。听了老白的话,我吓得差点丢了饭碗,但心里还是有些疑惑。刚才打开真实的银行网站,给小黑设置了一个cookie保存。之后山寨网站的请求发出去的时候,cookie也带上了,网站以为是正常的请求,所以出问题了。这种攻击叫做CSRF,跨站请求伪造”,老白说。“那后来呢?后来呢?”我继续追问。“后来,我后来把那小子炒掉了,这不是给你坑了!不过,为了防止以后再发生这样的事情,公司制定了禁止跨域请求的规定!”一边说一边告诉我什么是禁止跨域请求。这才知道原来请求的目标URL和所在网页的URL在协议、域名、端口上是有区别的,即使是跨域的。还好今天有老白,不然好不容易得到的工作就丢了。告别老白,回到自己的工位,抛出一个禁止跨域请求的错误,就不管了。但是没过多久公司就接到很多投诉,说我们打开的网页布局全乱,有时连图片都加载不出来。最后,怪罪到了小雪身上,小雪委屈地说:“这不是我的错,他们的很多网页都引用了外部的css和js文件,尤其是那个叫jQuery的最多。但是每次找老白,我都想这些文件,老白不肯给我公司禁止跨域请求的规定,我也没办法。”没办法,公司只好对跨域请求的规定进行了一轮修改,规定以后通过HTML标签导入外部文件。要适时发布,具体为::importexternalimages:importexternalcss