oFc*_*Fca 18 javascript ajax http request-headers
我在学习AJAX时偶然发现了这个命令.制作教程的人没有解释这个命令,命令中的参数是什么意思,它用于什么...下面是我用它的代码:
<script type="text/javascript">
function insert(){
if(window.XMLHttpRequest){
xmlhttp = new XMLHttpRequest();
}else{
xmlhttp = new ActiveXObject('Microsoft.XMLHTTP');
};
xmlhttp.onreadystatechange = function(){
if(xmlhttp.readyState == 4 && xmlhttp.status == 200){
document.getElementById('message').innerHTML = xmlhttp.responseText;
};
};
parameters = 'insert_text='+document.getElementById('insert_text').value;
xmlhttp.open('POST','ajax_posting_data.php',true);
xmlhttp.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');
xmlhttp.send(parameters);
};
</script>
Run Code Online (Sandbox Code Playgroud)
hvg*_*des 20
HTTP是一种协议.该协议的一部分是请求标头的概念.当xhr发生时,文本在客户端和服务器之间交换.请求标头是客户端发送到服务器的文本的一部分.
这是一种设置请求标头的方法.你看到的论点是
1)要设置的标头(在本例中为Content-type)
2)标头值.(在这种情况下,x-www-form-urlencoded)
HTTP请求根据一组例行程序从一个计算机系统传递的消息到另一个(A“协议” -此处ħ yper Ť分机Ť转让(BOT)P rotocol)以便做的事情一样发送数据,请求要发送回数据,更新之前发送的数据等
标头基本上是有关 HTTP 请求正文中数据的一条信息。它的目的是告诉接收请求的机器在请求正文中包含什么类型的数据、格式、使用的语言、是否要设置 cookie、日期、主机等。
一个 HTTP 请求可以放置多个标头,每个标头都有一个“名称”和一个“值”组件。在网页上它们看起来像
<meta name="........" content="............."/>
Run Code Online (Sandbox Code Playgroud)
您可以在元素中网页顶部的下方找到它们。
为了使人们能够从 JavaScript 函数内发送 HTTP 请求,我们创建了一个新的 XMLHttpRequest 对象,就像您的代码所做的那样
xmlhttp = new XMLHttpRequest();
Run Code Online (Sandbox Code Playgroud)
您打算向这个新的空对象添加数据。尽管它的名字,XMLHttpRequest 还允许以除 XML 之外的多种格式发送数据,例如 HTML 代码、文本、JSON 等。在您的示例中,每个数据名称将与其值通过“=”字符和每个数据/值配对将通过“&”字符与下一个配对分开。这种格式称为 URL 编码。
我们必须告诉接收计算机 HTTP 请求正文中的数据是如何编码的。有一个标准头来传达这一点,它通过方法setRequestHeader(..)添加到请求中。此方法使用 2 个参数,标头名称和标头的值。所有这些操作都在行中实现
xmlhttp.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');
Run Code Online (Sandbox Code Playgroud)
此setRequestHeader(..)方法必须在使用open(...)方法对请求进行特征化之后但在使用send(.)方法发送最终请求之前应用于请求。
在开放(...)方法定义:(1)HTTP请求的类型,例如,GET / POST / PUT等; (2) 包含此请求处理脚本的网页,例如一些 .php 文件或 Node.js 请求端点,用于对后端数据库进行适当的查询;(3) 请求动态的性质,例如异步请求被赋值为“true”,同步请求被赋值为“false”。
的发送(。)方法附加数据到请求的主体内被发送,你的情况被称为“参数”的变量中。
关于使用setRequestHeader(..)的更广泛问题,我会说它用于大多数 HTTP 请求情况。但是添加到 HTTP 请求正文的某些类型的数据会调用“Content-Type”标头的默认设置。