Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/dart/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在JavaScript中提取自定义HTTP POST请求头,以便在另一个POST请求中传输?_Javascript - Fatal编程技术网

如何在JavaScript中提取自定义HTTP POST请求头,以便在另一个POST请求中传输?

如何在JavaScript中提取自定义HTTP POST请求头,以便在另一个POST请求中传输?,javascript,Javascript,我想使用Javascript从POST请求中提取一个自定义HTTP请求头,以便稍后在请求中使用。这需要是一个POST请求的原因是此自定义头仅包含在POSTHTTP方法中,而不是GET或其他HTTP谓词中 假设定制HTTPPOST请求头是X-custom-TOKEN。在将X-CUSTOM-TOKEN的值与以下内容(HTTP表单)一起提交之前,我如何从POST/中读取并提取该值: history.pushState(“”,“/”); document.body.innerHTML=''; docum

我想使用Javascript从
POST
请求中提取一个自定义HTTP请求头,以便稍后在请求中使用。这需要是一个
POST
请求的原因是此自定义头仅包含在
POST
HTTP方法中,而不是
GET
或其他HTTP谓词中

假设定制HTTP
POST
请求头是
X-custom-TOKEN
。在将
X-CUSTOM-TOKEN
的值与以下内容(HTTP表单)一起提交之前,我如何从
POST/
中读取并提取该值:

history.pushState(“”,“/”);
document.body.innerHTML='';
document.getElementById('foobar').submit();
我知道这个用例听起来很愚蠢,但出于教育目的,我可以更好地理解与HTTP传输相关的JavaScript

非常感谢您的帮助。

视情况而定

如果请求是使用Fetch API构造的,那么您可以为它的头创建一个

但是,如果请求是使用XMLHTTPRequest构造的,那么似乎没有任何方法可以从准备好但未发送的请求中获取头。当然,如果代码是您的,那么在配置XHR时您应该可以访问这些值,这样您就可以利用这个机会将数据存储到以后可以检索的地方


如果XHR是由您无法编辑的第三方代码构建的,那么您就不走运了。在这种情况下,您可以使用某种服务器端代理将数据回显给您。这在教育设置中并不少见。

某些标题设置为HttpOnly,浏览器无法使用。感谢您的回复。正确,但这不适用于此场景。
X-CUSTOM-TOKEN
HTTP头没有将
httpOnly
标志设置为
true
。通常,这与Cookie HTTP头一起使用,因为这些值包含会话信息和其他信息。在这种情况下,
X-CUSTOM-TOKEN
本质上不是一个敏感的HTTP头,因此在这种情况下不应考虑此类保护机制。我知道您正在使用javascript发送post数据!在XML请求中,您可以使用getAllResponseHeaders()或getResponseHeader(名称)方法获取标题数据。您好,是的,我熟悉
getAllResponseHeaders()
getResponseHeader(名称)
,但这不是我要找的。我想提取HTTP请求头,而不是HTTP响应头。谢谢您的回复。我不确定是否可以获取请求标题,因为您必须自己将其添加到请求中,并且在发送请求时浏览器会添加自己的标题。如果标题在您的控制之下,您可以让服务器响应标题。
history.pushState('', '', '/');
document.body.innerHTML='<html><body style="background-color:black;"><form id="foobar" action="https://localhost:4449/" method="POST" enctype="multipart/form-data"><input type="hidden" name="access" value="true" /><input type="submit" value="Submit request" /></form></body></html>';
document.getElementById('foobar').submit();