ReactJS:对 fetch 的访问已被 CORS 策略阻止

Posted

技术标签:

【中文标题】ReactJS:对 fetch 的访问已被 CORS 策略阻止【英文标题】:ReactJS: access to fetch has been blocked by CORS policy 【发布时间】:2021-03-18 16:11:57 【问题描述】:

我的 ReactJS 项目中出现以下错误: “访问 fetch 已被 CORS 策略阻止:请求的资源上不存在“Access-Control-Allow-Origin”标头 如果 opaque 满足您的需要,请将请求模式设置为 'no-cors' 以获取禁用 CORS 的资源。"

这是我向后端发送请求的方式:

export const sendRequest = async ( endpoint = '' ,
 method = 'GET', body) => 
    const response = await fetch(`$url$endpoint`, 
        method,
        headers:  "Content-Type": "application/json" ,
        body: JSON.stringify(body)
    )
    const data = await response.json();

    return data;

我首先认为这是一个后端问题,但我在那里检查,发现后端 CORS 访问已为相同的标头和客户端启用。

我应该对上面的函数做任何修改吗??

【问题讨论】:

【参考方案1】:

有一个名为 cors 的 npm 模块。您可以将其安装在您的后端。如果您使用的是 ExpressJS,您可以使用 app.use(cors()) 将 cors 作为中间件。使用请求中设置的等效标头,它应该可以工作

【讨论】:

以上是关于ReactJS:对 fetch 的访问已被 CORS 策略阻止的主要内容,如果未能解决你的问题,请参考以下文章

如何在生产环境中在 Reactjs 中配置 COR

在 Javascript/Reactjs 中使用 Fetch API 和 map() 显示 JSON 数据

如何使用 Reactjs fetch 将 POST 数据发送到烧瓶

将对象存储在状态时渲染中的ReactJS Fetch Type错误

从源“http://localhost:4200”访问“http://localhost:1111/...”的 XMLHttpRequest 已被 CORS 策略阻止:

使用 reactjs 从 rest api 访问数据