在 OPTIONS 响应后使 fetch API 与 CORS 一起使用

2024-01-23

我正在尝试从我们的 API 获取数据。 API 已启用 CORS 支持并对 OPTIONS 请求返回以下响应:

Access-Control-Request-Headers:content-type  
Access-Control-Allow-Origin:*  

API不允许'Content-type'除了'application/json'.

利用这个限制,我尝试使用fetchReact-Native 的方法来获取数据。

方法1(无cors):

{
    method: 'POST',
    mode: "no-cors",
    headers: {
       'content-type': 'application/json'
}

使用此方法,浏览器会自动将内容类型发送为“text/plain”。我认为这是因为 CORS 默认情况下只允许三个标头之一。但是,由于服务器不支持此内容类型,因此它会针对不支持的内容类型返回错误。

方法 2(使用 cors 或不使用 cors):

{ 
    method: 'POST',
    mode: "cors", // or without this line
    redirect: 'follow',
    headers: {
        'content-type': 'application/json'
    }
}   
...   
.then(response => console.log(response))

在这种情况下,使用Chrome的F12网络工具,我可以看到服务器返回数据:对服务器的第一个请求是fetch for OPTIONS。对此,服务器回复一个空对象以及上面设置的标头。下一个调用是实际的 POST API 调用,服务器会使用包含一些数据的正确 JSON 响应来响应该调用。但是,通过我的代码在控制台上得到的响应是{}。我认为这是因为反应的fetchAPI正在返回响应OPTIONS调用而不是实际的POST称呼。

有没有办法忽略 OPTIONS 请求的响应并获取then处理后续请求的响应的方法?


您遇到的直接问题是,当前编写的代码期望响应为 JSON,但响应实际上是一个 Promise,您需要处理它才能获取 JSON。

所以你需要做这样的事情:

fetch("https://example.com")
    .then(response => response.json())
    .then(jsondata => console.log(jsondata))
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 OPTIONS 响应后使 fetch API 与 CORS 一起使用 的相关文章

随机推荐

  • tabindex 给出了它的焦点,但是在回车键上输入它不起作用

    当我用鼠标单击搜索图标时 它工作正常 但是当我使用选项卡并且焦点转到图标时 但当我输入 ENTER 关键字时 它不起作用 div class mobile header icon i class search i div 紧迫enter不触
  • Carrierwave:如果尺寸大于则缩放图像(有条件创建版本)

    仅当图像大于版本大小时 才可以使用载波创建版本 例如拇指 吗 Example version thumb if gt is thumbnable do process resize to fit gt 32 nil end protecte
  • 类型注释被推断的表达式类型覆盖

    在 Scala 编程语言中 假设我将使用更广泛的类型注释表达式并提供一个狭窄的值 我的程序将被拒绝 scala gt def x A A 8
  • 使用 HTML 和 CSS 剪辑图像

    我想在 144px x 144px div 元素中显示图像 图像总是大于 144px 所以我想缩放它们 我的意思是最小的一侧将接触 div 的边缘 从另一侧 与信箱相反 切掉一点 我怎样才能做到这一点并让它在 IE 等旧版浏览器上也能工作
  • 在 NodeJS Lambda 函数中列出 AWS.CognitoIdentityServiceProvider.listUsers 中的用户及其组?

    因此 我需要在客户端的自定义管理屏幕中显示用户列表及其各个组 我正在返回结果AWS CognitoIdentityServiceProvider listUsers在 Lambda 函数中 这可以很好地列出用户 但我不确定为每个用户获取组并
  • 按行名称连接多个表[重复]

    这个问题在这里已经有答案了 我想按行名称合并多个表 这些表的行数不同 并且它们具有唯一行和共享行 这些行都应该出现在输出中 如果可能的话我想解决这个问题awk 但我也对其他解决方案感到满意 表1 tab a 5 b 5 d 9 表2 tab
  • C++:成员指针已初始化?

    代码示例应该解释一下 class A B pB C pC D d public A int i int j d j pC new C i abc note pB is not initialised e g pB NULL 显然 pB 应该
  • C++ 11 线程与 clang

    我想学习使用 C 11 线程来加速我的语言的编译 是的 我正在构建一个编译器 x 我尝试的第一个示例在 clang 3 3 SVN 中抛出了几个错误 它在 GCC 4 6 3 下编译得很好 我从 llvm org 的 SVN 下载了 cla
  • 将对象的子集直接解构为新对象[重复]

    这个问题在这里已经有答案了 有没有一条语句可以做到这一点 我正在空白 this state is a basic object with many keys var toDate fromDate location flavor this
  • 无法更新 FBSDKCoreKit POD iOS

    当我尝试进行 pod 更新时 出现以下错误 一旦失败 我什至无法再进行 pod install 了 安装FBSDKCoreKit 4 36 0 安装 FBSDKCoreKit 时出错 usr bin git 克隆https github c
  • Visual C++ 中的堆框架有多大

    在 Visual C 中 如果我使用 new 在堆上创建对象 堆帧头和填充会占用多少额外空间 特别是在发布代码中 我期望一个 int 表示块中有多少可用空间 另一个可能表示当前正在使用多少空间 并且帧大小根据体系结构四舍五入到最接近的 32
  • WEB API 返回遵循序列化属性的对象

    我正在使用 WEB API 返回一个对象 类 类已经使用 System Xml Serialization 属性进行结构化 这使得使用 WEB API 返回整个类变得困难 因为它公开的内容超出了应有的范围 我不认为这是序列化类并返回字符串的
  • MDX 查询返回记录数

    以下是我的 MDX 查询 SELECT NON EMPTY Measures Fact Sample Count ON COLUMNS NON EMPTY Fact Sample Sample Reference No Sample Ref
  • Django 的缓存模块可以在 Google App Engine 上运行吗?

    我正在 Google App Engine 上运行 Django 1 0 2 并且想知道以下哪一项 如果有 Django 缓存模块 http docs djangoproject com en dev topics cache 本质上应该与
  • GCC 生成的 ARM 和 x86 汇编代码的差异

    让我们看一个简单的 C 代码来设置寄存器 int main int a int 111111 a 0x1000 return 0 当我使用 1 级优化为 ARM arm none eabi gcc 编译此代码时 汇编代码类似于 mov r2
  • travis 构建失败,因为缺少 devtools

    我正在尝试设置 travis 构建 但失败并出现以下错误 export PKG TARBALL Rscript e pkg lt devtools as package cat paste0 pkg package pkg version
  • Django JavaScript 文件

    在 Django 应用程序中 我应该将 javascript jquery 脚本放在哪里 与其他静态媒体一起使用 请参阅此处了解更多信息 http docs djangoproject com en dev howto static fil
  • 使用 Margin Auto 和 Center 将 Float Left Div 居中

    我知道这个问题已经被问过很多次了 将 div 居中对齐 https stackoverflow com questions 1740587 float a div to center 不过 我遵循他们的建议
  • XNA 的 CPU 使用率高

    我今天刚刚注意到 当我编译并运行一款新的 XNA 4 0 游戏时 其中一个 CPU 线程以 100 的速度运行 并且帧速率下降到 54 FPS 奇怪的是 有时它可以在 60 FPS 下运行 但随后就会下降到 54 FPS 我以前没有注意到这
  • 在 OPTIONS 响应后使 fetch API 与 CORS 一起使用

    我正在尝试从我们的 API 获取数据 API 已启用 CORS 支持并对 OPTIONS 请求返回以下响应 Access Control Request Headers content type Access Control Allow O