POST req:仅支持绝对 URL
Posted
技术标签:
【中文标题】POST req:仅支持绝对 URL【英文标题】:POST req: Only absolute URLs are supported 【发布时间】:2021-03-20 09:14:55 【问题描述】:我正在编写这个 app.js 客户端文件,它执行对服务器的发布请求(代码如下):
const fetch = require('node-fetch');
/* Function to POST data */
const postData = async ( url = 'http://localhost/8000/add/', data = )=>
console.log(data)
const response = await fetch(url,
method: 'POST', // *GET, POST, PUT, DELETE, etc.
credentials: 'same-origin', // include, *same-origin, omit
headers:
'Content-Type': 'application/json'
,
body: JSON.stringify(data) // body data type must match "Content-Type" header
);
try
const newData = await response.json();
console.log(newData);
return newData
catch(error)
console.log("errors", error);
// appropriately handle the error
// TODO-Call Function
postData('/addAnimal', animal: 'girrafe');
当我使用node app.js
运行时,我不断收到此错误:
node .\app.js
animal: 'girrafe'
D:\Downloads\FEWD\WebAPIs\N&E\node_modules\node-fetch\lib\index.js:1305
throw new TypeError('Only absolute URLs are supported');
^
TypeError: Only absolute URLs are supported
at getNodeRequestOptions (D:\Downloads\FEWD\WebAPIs\N&E\node_modules\node-fetch\lib\index.js:1305:9)
D:\Downloads\FEWD\WebAPIs\N&E\node_modules\node-fetch\lib\index.js:1305
throw new TypeError('Only absolute URLs are supported');
^
TypeError: Only absolute URLs are supported
at getNodeRequestOptions (D:\Downloads\FEWD\WebAPIs\N&E\node_modules\node-fetch\lib\index.js:1305:9)
at D:\Downloads\FEWD\WebAPIs\N&E\node_modules\node-fetch\lib\index.js:1410:19
at new Promise (<anonymous>)
at fetch (D:\Downloads\FEWD\WebAPIs\N&E\node_modules\node-fetch\lib\index.js:1407:9)
at postData (D:\Downloads\FEWD\WebAPIs\N&E\demo\app.js:22:31)
at Object.<anonymous> (D:\Downloads\FEWD\WebAPIs\N&E\demo\app.js:42:3)
任何关于为什么的建议,将不胜感激。 谢谢
【问题讨论】:
【参考方案1】:您的 url = 'http://localhost/8000/add'
将默认参数设置为该 URL,然后当您将其作为参数提供时,您使用 '/addAnimal'
覆盖它。您应该提供一个绝对 URL:
postData('http://localhost/8000/addAnimal', animal: 'girrafe');
作为旁注,我很确定 localhost/8000
是一个错字,应该是 localhost:8000
。
【讨论】:
以上是关于POST req:仅支持绝对 URL的主要内容,如果未能解决你的问题,请参考以下文章
urllib默认只支持HTTP/HTTPS的GET和POST方法
Nginx笔记:支持对用户提交URL和服务的URL不一致时,保持对POST提交的支持
在vue-cli搭建的项目中在后台mock接口中支持req.body和req.cookies