415 Unsupported Media Type Fetch POST 请求
Posted
技术标签:
【中文标题】415 Unsupported Media Type Fetch POST 请求【英文标题】:415 Unsupported Media Type Fetch POST request 【发布时间】:2021-07-16 17:17:49 【问题描述】:我正在尝试向一些 3rd 方 API 发送 fetch POST 请求。在 Postman 中测试此调用时,我能够获得成功的 200 响应。在我的项目中使用来自 Postman 的相同代码会返回 415 Unsupported Media Type。我一直在寻找解决方案,并尝试按照几篇文章和文章的建议将其与以下标题一起发送。
myHeaders.append("Content-Type", "application/json");
myHeaders.append("Access-Control-Allow-Origin", "*");
myHeaders.append("Accept", "application/json");
我已将我的 API 调用附在下面,如果有人能够发现我收到此 415 的原因,那将非常有帮助。
var myHeaders = new Headers();
myHeaders.append("xxxxx_api_key", "");
myHeaders.append("Content-Type", "application/json");
myHeaders.append("Access-Control-Allow-Origin", "*");
myHeaders.append("Accept", "application/json");
var raw = JSON.stringify(
api_key: "xxxxx_api_key",
profiles: [
email: "thomas.jefferson@example.com",
phone_number: "17326138213",
example_property: "valueB",
],
);
console.log(raw);
var requestOptions =
method: "POST",
mode: "no-cors",
headers: myHeaders,
body: raw,
redirect: "follow",
;
fetch("https://a.klaviyo.com/api/v2/list/XXXXX/members", requestOptions)
.then((response) => response.json())
.then((result) => console.log(result))
.catch((error) => console.log("error", error));
这是从 Postman 导出的工作请求
curl --location --request POST 'a.klaviyo.com/api/v2/list/XXXXX/members' \
--header 'Content-Type: application/json' \
--header 'xxx_api_key;' \
--data-raw ' "api_key": "xxx_api_key", "profiles": [ "email": "thomas.jefferson@example.com", "phone_number": "17326138213", "example_property": "valueB" ] '
【问题讨论】:
当你导出它时,请展示工作邮递员请求的样子(例如作为 cURL) curl --location --request POST 'a.klaviyo.com/api/v2/list/X3jKqa/members' \ --header 'Content-Type: application/json' \ --header 'xxx_api_key;' \ --data-raw ' "api_key": 'xxx_api_key', "profiles": [ "email": "thomas.jefferson@example.com", "phone_number": "17326138213", "example_property": "valueB " ] ' 上面的调用是从 Postman 提取的一个 fetch API 调用。 我看到这两个请求之间的唯一区别是Accept
标头。从我从文档中得到的信息来看,xxx_api_key
标头实际上应该看起来像 api_key: xxx_api_key
但这似乎不是问题,因为 api 密钥也可以放在正文中。
【参考方案1】:
嘿,你可以使用中间件:
把你的网址改成
https://cors-anywhere.herokuapp.com/YOUR-URL-HERE
来源:https://github.com/Rob--W/cors-anywhere
【讨论】:
以上是关于415 Unsupported Media Type Fetch POST 请求的主要内容,如果未能解决你的问题,请参考以下文章
Spring 发送 JSON 数据提示 Unsupported Media Type 错误 “status“: 415, “error“: “Unsupported Media Type
Spring 发送 JSON 数据提示 Unsupported Media Type 错误 “status“: 415, “error“: “Unsupported Media Type
Ajax请求(415 Unsupported Media Type)
415 Unsupported Media Type Fetch POST 请求