AJAX
异步的JS与XML
最大的特点:在网页不刷新的情况下,向服务端发送http请求,然后得到http响应。实现懒加载效果,用则加载,不用则不加载。允许根据用户事件来更新部分页面内容。
缺点:不能回退;存在跨域问题(同源);SEO(搜索引擎优化)不友好(AJAX向服务端发送请求,服务端返回结果,通过JS动态创建到页面,所以爬虫爬不到数据)。
AJAX不是新的编程语言,而是一种将现有的标准组合在一起使用的新方式。
XML
XML 可扩展标记语言,被设计用来传输和存储数据。HTML用来在网页中呈现数据。
XML没有预定义标签,都是自定义标签。
之前,AJAX在进行数据交换时所使用的格式是XML。
服务器端给浏览器端返回的就是XML格式的字符串,然后JS对XML进行解析,把数据提取出来。
JSON
JSON相对于XML来说更加简洁,在数据转换时也更加容易。
HTTP协议
HTTP(hypertext transport protocol)超文本传输协议,协议详细规定了浏览器和万维网服务器之间相互通信的规则。
HTTP规范了两块内容:请求(客户端给服务器)和响应(服务器给客户端)。
请求报文
格式:
行 POST / URL HTTP/1.1
头 Host:xxx
Cookie:xxx
Content-type:xxx
User-Agent:xxx
空行
体 username=admin$password=admin
(如果是GET请求,请求体为空,如果是POST请求,可以不为空)
响应报文
格式:
行 HTTTP/1.1 200 Ok (协议版本 响应状态码 相应状态字符串)
头 Content-Type:text/html;charset=utf-8
Content-length:2048
Content-encoding:gzip
空行
体 <html>
<head></head>
<body>
<h1></h1>
</body>
</html>
(浏览器在接到结果之后会把响应体结果提取出来,然后对内容做出解析,在页面做出渲染和展示)
在浏览器中如何查看请求报文和响应报文
在控制台查看请求报文和响应报文:
请求报文:看Requst Headers(请求行、头)和Form Data(请求体)
GET请求有URL参数,Query String Parameters对请求的参数做出解析
响应报文:看Response Headers和Response
在控制台Network中可以检查参数、检查响应。
Node.js
Mode.js是基于Chrome V8引擎的JavaScript运行时,一个应用程序,解释js代码。
Express框架
AJAX给服务端发请求,使用Express框架进行演示
AJAX案例准备
'/server’客户端浏览器向服务器发送请求时,如果说url的路径是请求行的第二段内容,如果它的内容是/server的话,就执行函数体内容 。
AJAX请求的基本操作:
遇到的bug
has been blocked by CORS policy: No ‘Access-Control-Allow-Origin’ header is present on the requested resource.
大概意思是:已被CORS策略阻止,无法访问控制允许来源,属于跨域问题。问朋友说是需要后端来解决的问题(摊手)
同源策略规定:1. 协议名,2. 域名/ip地址,3. 端口号,要求三者完全一致。 只要有一个不一样,就是违背同源策略,产生跨域,只有全部一样,才符合同源策略。
- 同源问题
1.cors:
写服务器的人在服务器返回响应时加几个特殊的响应头,浏览器可以识别,是真正意义上的解决跨域。
2.jsonp:
借助了script标签的src属性在引入外部资源时不受同源策略限制的特点办到的。而且只能解决get请求的跨域问题
3.配置一个代理服务器:
本地和代理服务器同地址,经过代理服务器和服务器传递数据,来解决浏览器和服务器之间的跨域问题。
如何开启代理服务器?
1.nginx方法:后端方法
2.vue-cli:vue脚手架(前端方法)缺点:不能配置多个代理;不能灵活的控制到底是使用代理服务器还是服务器。
方式一:
方式二:
![方式二](https://img-blog.csdnimg.cn/bba9c2cc139f488baf2e07d6f11eed83.png![在这里插入图片描述](https://img-blog.csdnimg.cn/2f1fd75c9a81446887286542344b0d1b.png
应用: