如何在发送CSV时覆盖反应js fetch方法中的内容类型
Posted
技术标签:
【中文标题】如何在发送CSV时覆盖反应js fetch方法中的内容类型【英文标题】:How to overwrite content type in react js fetch method while sending CSV 【发布时间】:2018-12-21 15:43:46 【问题描述】:我将内容类型作为 Text/csv 发送,因为我的 API 只接受 text/csv 类型,但文件的内容类型显示为 application/vnd.ms-excel。
我还与邮递员核实过,API 正在接受 http 请求中的文件,但是当我通过浏览器应用程序发送时,它返回响应不受支持的媒体类型
我该如何解决这个问题。
请过一遍代码:
var Authorization=window.sessionStorage.getItem('acesstToken')
var Headers=
'Authorization': 'Bearer '+Authorization,
'Content-Type': 'text/csv',
const fd = new FormData()
fd.append('csv_file',fieldValues.file[0],fieldValues.file[0].name);
var url="XXXXXXXXXXXXXXX";
fetch(url,
method : 'POST',
headers: Headers,
body: fd,
)
【问题讨论】:
提供一些代码,如果接收到的文件的内容类型是 application/vnd.ms-excel - 这意味着你正在发送一些 excel 文件 您能否在问题中包含您的获取代码? 您是否缺少text/csv
周围的引号?即'Content-Type': 'text/csv',
【参考方案1】:
这是我的赌注。
可能的语法问题。您缺少 'Content-Type': 'text/csv'
的结束语。您确定您的控制台中没有任何语法错误吗?
如果它与 Postman 一起工作(它接受文件),但不能通过您的浏览器应用程序工作,我敢打赌这可能是 同源策略的问题。
在 no-cors 模式下,浏览器仅限于发送“简单”请求——仅包含安全列表中的方法和安全列表头的请求。要发送带有 Authorization 等标头的跨域请求,您必须放弃 no-cors 模式并支持 API 的预检请求 (OPTIONS)。见this answer。
【讨论】:
没有语法错误我已经检查过这是我发布问题时的错误。以上是关于如何在发送CSV时覆盖反应js fetch方法中的内容类型的主要内容,如果未能解决你的问题,请参考以下文章
使用 react js 和 express API 服务器发布一个带有 fetch 的对象
如何使用 Fetch 在前端显示通过 HTTP (Node.js) 发送的图像?
如何根据 Discord.js 中的反应编辑消息(创建列表和切换页面)
当我调用 post 方法时反应原生 Axios 或 fetch(get 方法工作正常) post 参数在服务器端获取空数据