龙空技术网

WEB开发进阶(03)(HTTP,HTTPS及那些坑)

不正经的程序员 413

前言:

今天各位老铁们对“ajaxsession无效”都比较注重,兄弟们都需要知道一些“ajaxsession无效”的相关知识。那么小编在网摘上汇集了一些关于“ajaxsession无效””的相关文章,希望姐妹们能喜欢,小伙伴们一起来学习一下吧!

顺着上一篇的话,围绕HTTP,我将继续叙述更为要紧和深层次的内容。

在开发的时候,作为一名前端,或者后端程序员,我想大家都会经历或者即将经历以下这些感觉很坑的问题,但当你洞悉其原理后,又会觉得李所应当。

那些坑

1.在使用ajax进行异步请求时,获取不到数据,服务端开发童鞋说没问题,你也可以直接访问接口地址,数据没问题,但是异步就获取不到。

2.图片的SRC引入网络文件却无法显示,但是打开图片网络地址又可以显示

3.websocket在连接https的服务地址时提示错误,连接失败

。。。。。

HTTP与HTTPS

首先,上述的一些问题可能与协议有关,解释HTTP和HTTPS时,首先要说明一个东西,那就是端口,什么是端口,百度比我清楚,而我最简单的理解,就是,网络数据传输到应用层时,系统要知道你的数据包要传给哪个程序,所以需要注册一个端口,这个端口从1-6万多,每个程序做SOCKET编程时需要定义好端口号,当然系统里也不能重复使用端口号,比如HTTP是80端口,虽然浏览器输入网址时并没有输入:80,但浏览器访问时帮你带好了,如果你接触过服务端开发,配置本地测试环境时可能就修改并使用过,你只需要在IP地址后面加上:端口号,浏览器就会按这个端口号访问服务。其他软件,比如mysql 3306 ,redis 6379等等,我们自己在创造服务端应用,。服务端服务时也需要定义好端口号,这在上一篇中也有讲到。那么HTTPS是什么,大家都知道HTTPS是加密的HTTP,想起来很容易,但里面却暗藏玄机。HTTPS的端口号为443,在HTTP的基础上访问方式就改变了,第一,浏览器在访问WEB服务端时,根据访问的是HTTPS,从而询问服务端先下载证书,而服务端程序如apache nginx 根据SSL的配置,公钥,密文等生成证书发送给浏览器,第二 浏览器整理好自己的HTTP报文,通过这个证书(秘钥信息)加密数据,发送给服务端,服务端同样方式再解密出来明文,之后就跟普通HTTP一样把反馈信息,根据证书打包再发送给浏览器。(HTTPS相关加密的方式,有兴趣可以再百度一下,公钥 与 私钥的生成,和传输时的使用方法,服务端程序,如apache nginx配置ssl,即配置https的方法,网上也都有,如果你想自己编写支持https的服务端socket服务,那要下点功夫)

讲到这里,一些问题迎刃而解了吧。如果你是用http的页面上访问https的资源,那就会被隔离,如果你在https的websocket访问一个http的websocket服务,那也会失败。我加密,你不加密怎么通讯?我不加密,你加密,亦是如此,当然当你完全了解其原理后,也可以尝试改变,因为浏览器不允许,不代表我们自己开发的软件不允许。

跨域问题

数据接口调用失败有时候跟跨域有关。

服务端开发有没有跨域?如果你不明白这个,说明你还不了解跨域

浏览器为了阻止一些恶意网站的JS脚本攻击,会禁止跨域,即调用非自己域名下的接口调用。默认按1级域名隔离,比如无法直接ajax到tieba.baidu.com的内容。这里我就不详细介绍跨域问题,而是专注分析浏览器关于安全的一些介绍,如果你遇到跨域问题,可以让服务端做接口转接,或者通过其他格式协议获取,解决方法有几种,可以百度一下

跨域,这个 域 的概念其实很重要,涉及的东西很多,比如,资源文件的索引,cookie等等。在浏览器发展的初期,出现了很多有趣的东西。比如我在我的网站上编写一段js,用户在访问我的网站,下载自动运行js后,会按一定频率猛访问某网站,这在现在的许多网站中普遍存在,访问网站后,莫名其妙的成为了肉鸡,不断攻击别的网站,在网盟鼎盛的时代,很多人假造点击赚钱,被IP封锁,也会利用此道,利用一些流量大的网站,挟持用户浏览器去做很多事情。

在WEB开发初期,IE还存在的年代,WEB标准还没如此强大的时候,cookie其实也存在跨域的问题,当你在页面使用ajax时,你会发现,你的ajax请求并未携带cookie,这导致了session的失效。那时候,我们只能使用iframe包含的形式去做一些异步上传文件的事情。

讲到iframe,这里又有趣了,你是否尝试过,使用主页面的js去访问iframe里的节点,这里也存在跨域问题,如果你在iframe的页面里调用主页面的js方法或者节点,又是另一个故事,有兴趣的可以尝试一下。

之后我会在WEB发展一篇中着重讲述一些根据具体问题而加入到WEB标准的故事。这里面涉及到很多现实的问题,网站文件自动下载(带病毒的文件),异步JS脚本引入等等。

标签: #ajaxsession无效 #https和ajax数据请求