如何用JS获取外部网站向我方网站发送的POST request payload内容?
问题解答
核心结论
纯前端JavaScript无法直接接收并处理外部网站主动发起的POST请求,你必须搭建一个后端服务来接收、解析这些XML数据。
为什么前端拿不到数据?
外部网站发起的POST请求是直接发送到你的域名对应的服务器IP地址上的,而前端JS运行在用户的浏览器客户端中——只有当请求是由当前页面内的JS发起时,前端才能捕获响应数据。你在工具里看到的payload是服务器端接收到的内容,浏览器里的JS完全感知不到这个外部发起的请求,自然无法访问。
怎么解决?
搭建一个极简的后端服务即可,以下是两种常见的实现示例:
1. Node.js + Express 方案
const express = require('express'); const bodyParser = require('body-parser'); const app = express(); // 配置解析XML格式的请求体 app.use(bodyParser.text({ type: 'application/xml' })); // 定义接收POST请求的接口路径 app.post('/xml-webhook', (req, res) => { // req.body 就是外部传来的XML字符串 const rawXml = req.body; console.log('收到XML数据:', rawXml); // 这里可以添加XML处理逻辑,比如用xml2js转成JSON // const { parseString } = require('xml2js'); // parseString(rawXml, (err, result) => { /* 处理JSON数据 */ }); // 返回成功响应给外部网站(对方可能需要确认请求已送达) res.status(200).send('OK'); }); // 启动服务器 app.listen(3000, () => { console.log('后端服务运行在 http://localhost:3000'); });
2. PHP 极简方案
<?php // 读取POST请求的原始XML数据 $xmlData = file_get_contents('php://input'); // 保存到本地文件(或做其他处理) file_put_contents('received_xml_' . date('YmdHis') . '.xml', $xmlData); // 返回200状态码确认接收 header('HTTP/1.1 200 OK'); echo 'Received'; ?>
补充说明
- 后端服务部署后,把接收接口的URL(比如
https://your-domain.com/xml-webhook)提供给外部网站即可 - 务必根据外部网站的请求头配置后端的解析规则(比如对方如果用
application/xml作为Content-Type,就要对应解析)
内容的提问来源于stack exchange,提问作者Berg_Durden
相关产品推荐
相关产品推荐

