文章目录 1. HTTP(超文本传输协议)请求具有以下主要特征: 1.1 请求行(Request Line): 1.2 请求头(Request Headers): 1.3 请求正文(Request Body): 1.4 状态码(Status Code): 1.5 无状态性(Statelessness): 1.6 缓存支持(Cacheability): 1.7 方法多样性(Method Diversity): 1.8 URI定位(Uniform Resource Identifier): 2. 在JavaScript中,可以使用XMLHttpRequest对象或者fetch API来发送HTTP 请求 2.1 使用XMLHttpRequest 2.2 使用fetch API
1. HTTP(超文本传输协议)请求具有以下主要特征:
1.1 请求行(Request Line):
方法(Method): 指定请求的类型,如GET、POST、PUT、DELETE
等,表示对资源的操作方式。 URL(Uniform Resource Locator): 请求资源的统一资源定位符,标识了要访问的网络资源。 协议版本(Protocol Version): 表明使用的HTTP协议版本,如HTTP/1.1、HTTP/2
等。
1.2 请求头(Request Headers):
包含一系列键值对,提供了关于请求的元信息,如客户端信息、内容类型、接受的语言、认证信息等。 例如:Accept-Language: zh-CN,zh;q=0.9
表示客户端优先接受中文内容。
1.3 请求正文(Request Body):
部分请求方法(如POST、PUT)可能携带请求正文,包含发送给服务器的数据。 正文内容根据请求头中的Content-Type
决定格式,可以是表单数据、JSON、XML等。
1.4 状态码(Status Code):
虽然状态码是响应的一部分,但它是HTTP交互的重要特征,指示请求的处理结果。 如200 表示成功,404 表示未找到**,500**表示服务器内部错误等。
1.5 无状态性(Statelessness):
HTTP 协议本身是无状态的,意味着每个请求都是独立的,服务器不保存关于客户端的上下文信息。这一特性通过Cookie 和Session 等机制来实现用户会话管理。
1.6 缓存支持(Cacheability):
HTTP支持通过特定的头部字段(如Cache-Control, Expires
)来控制响应是否可被缓存,以提高效率。
1.7 方法多样性(Method Diversity):
提供多种请求方法,每种方法对应不同的操作意图,满足不同场景下的需求。
1.8 URI定位(Uniform Resource Identifier):
使用URI定位网络资源,使得Web上的每一个资源都可以被唯一标识和请求。
2. 在JavaScript中,可以使用XMLHttpRequest对象或者fetch API来发送HTTP 请求
2.1 使用XMLHttpRequest
var xhr = new XMLHttpRequest ( ) ;
xhr. open ( 'POST' , 'https://api.example.com/data' , true ) ;
xhr. setRequestHeader ( 'Content-Type' , 'application/json;charset=UTF-8' ) ;
xhr. onreadystatechange = function ( ) { if ( xhr. readyState === 4 && xhr. status === 200 ) { console. log ( xhr. responseText) ; }
} ;
var data = JSON . stringify ( { key : 'value' } ) ;
xhr. send ( data) ;
2.2 使用fetch API
fetch ( 'https://api.example.com/data' , { method : 'POST' , headers : { 'Content-Type' : 'application/json' } , body : JSON . stringify ( { key : 'value' } )
} )
. then ( response => { if ( response. ok) { return response. json ( ) ; } else { throw new Error ( 'Network response was not ok.' ) ; }
} )
. then ( data => console. log ( data) )
. catch ( error => console. error ( 'Error:' , error) ) ;