什么是'xmlhttp.setRequestHeader();' 在哪些情况下使用?

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)

有关详细信息,请参阅此


Tru*_*unk 7

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”标头的默认设置。