You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从前端/REST客户端的HTTP请求中移除所有默认请求头

如何发送无默认请求头、仅含text/plain请求体的HTTP POST请求

这个问题确实挺棘手的——很多HTTP客户端和浏览器都会自动添加默认请求头,比如Host、User-Agent这些,而第三方硬件服务器把所有头都当成数据处理,那我们就得想办法把这些默认头尽可能清空。下面分不同工具给你具体解决方案:

一、Postman 操作方案

Postman默认会带不少请求头,但可以手动清空大部分:

  1. 打开Postman新建POST请求,填入目标硬件的URL。
  2. 切换到Headers标签页,点击右上角的「Clear all」按钮,清空所有默认生成的头。
  3. 不要添加任何自定义请求头,直接切到Body标签页:
    • 选择「raw」格式,下拉菜单里选「Text」(对应text/plain类型)。
    • 在输入框里填入你的请求体内容。
  4. 点击「Send」发送即可。

注意:Postman会强制发送Host头(这是HTTP协议的必填项),如果硬件连这个都不接受,那得用更底层的工具,比如下面的curl或Node.js原生模块。

二、浏览器端 JavaScript(含 Angular)解决方案

浏览器的安全策略和API默认行为会自动加一些头,比如Origin、Content-Type,这里推荐用XMLHttpRequest,它比fetch更灵活,能手动控制大部分请求头:

原生 JavaScript 示例

const xhr = new XMLHttpRequest();
xhr.open('POST', 'http://你的硬件IP:端口/路径', true);

// 关键:不设置任何自定义请求头(部分浏览器仍会自动加Host、Connection这类协议必需头,没法完全去掉)
xhr.onreadystatechange = function() {
  if (xhr.readyState === 4) {
    console.log('硬件响应:', xhr.responseText);
  }
};

// 直接发送text/plain格式的请求体
xhr.send('你的请求体内容');

Angular 解决方案

Angular的HttpClient默认会带一些头,你需要创建空请求头并禁用默认拦截器:

import { HttpClient, HttpHeaders } from '@angular/common/http';

// 创建完全空的请求头对象
const emptyHeaders = new HttpHeaders({});

// 发送请求时指定空头、text响应类型
this.http.post('http://你的硬件IP:端口/路径', '你的请求体内容', {
  headers: emptyHeaders,
  responseType: 'text',
  withCredentials: false // 禁用自动携带凭证类头
}).subscribe(
  response => console.log('硬件响应:', response),
  error => console.error('请求出错:', error)
);

提示:浏览器出于HTTP规范和安全限制,一定会发送Host、Connection这类头,如果硬件连这些都不接受,建议在中间加一个Node.js代理服务器,由代理转发请求时清空所有头。

三、Node.js 解决方案(适合代理或直接发请求)

Node.js的原生http模块可以完全控制请求头,甚至能绕过HTTP规范去掉必填头(虽然不推荐,但适配硬件需求的话可以这么做):

const http = require('http');

const options = {
  hostname: '你的硬件IP',
  port: '你的端口',
  path: '/路径',
  method: 'POST',
  // 关键:设置空headers对象,不添加任何请求头
  headers: {}
};

const req = http.request(options, (res) => {
  res.on('data', (chunk) => {
    console.log(`硬件响应内容: ${chunk}`);
  });
});

req.on('error', (e) => {
  console.error(`请求出错: ${e.message}`);
});

// 发送text/plain格式的请求体
req.write('你的请求体内容');
req.end();

这个方案可以去掉几乎所有请求头,完全满足硬件“只接受请求体”的要求。

四、curl 命令解决方案

curl也能手动清空所有默认请求头:

curl -X POST -H '' --data-binary '你的请求体内容' http://你的硬件IP:端口/路径

解释:-H ''表示清空所有默认请求头,--data-binary会把内容以text/plain格式发送;如果需要明确指定Content-Type,可以加-H 'Content-Type: text/plain',但如果硬件不允许任何头就不要加这部分。

内容的提问来源于stack exchange,提问作者Sreenivasa Rajiv

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 06:34:25