如何在发送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方法中的内容类型的主要内容,如果未能解决你的问题,请参考以下文章

如何让bot在反应后将消息发送到另一个频道|不和谐.js

Discord.js:如何发送消息并从中收集反应

使用 react js 和 express API 服务器发布一个带有 fetch 的对象

如何使用 Fetch 在前端显示通过 HTTP (Node.js) 发送的图像?

如何根据 Discord.js 中的反应编辑消息(创建列表和切换页面)

当我调用 post 方法时反应原生 Axios 或 fetch(get 方法工作正常) post 参数在服务器端获取空数据