reactjs - 无法从 React 应用程序获取 API
问题描述
我在 Google Cloud Function 中构建了 API。当我尝试直接获取 API 时发生 CORS 错误。虽然我添加了Access-Control-Allow-Origin
,但它失败了。
错误:
来自原点“ http://localhost:3000 ”的“ https://xxxxxxx.com ”已被 CORS 策略阻止:对预检请求的响应未通过访问控制检查:没有“Access-Control-Allow-Origin”标头存在于请求的资源上。如果不透明的响应满足您的需求,请将请求的模式设置为“no-cors”以获取禁用 CORS 的资源。
const apiURL = 'https://xxxxxxx.com'
const headers = new Headers();
headers.set("Content-type", "application/json");
headers.set("Access-Control-Allow-Origin", "*");
const createRes = await fetch(
`${apiURL}/testFetch`,
{
method: "POST",
headers: headers,
body: JSON.stringify({
test: "test"
}),
}
);
解决方案
Access-Control-Allow-Origin 是响应标头。它应该是您响应的一部分,而不是请求的一部分。请确保您的 API 返回相应的标头。
https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Access-Control-Allow-Origin
推荐阅读
- database - “基于组合框选择自动填充 Access 文本框”是否适用于计算类型字段?
- javascript - axios 不返回完整数据
- css - 如何在反应轮播中制作响应式数字操作系统幻灯片
- java - 如何使用 ModelMapper 将两个相关实体映射到一个 DTO 对象
- codeception - 未找到代码接收 seeInDatabase
- python - 为什么这个 Python 程序没有按预期工作?
- ios - 如何使用自定义 UIView(以及内部的转换)重新加载自定义 UICollectionViewCell
- reactjs - 在 React 中编辑值后无法在文本框中输入
- java - 我的 android 应用程序在模拟器上运行并在 android 设备上运行,但登录页面在移动设备上不起作用
- react-native - 无法在深层堆栈屏幕上自定义 React Native 标题标题