reactjs - 从使用 CRA 创建的 Firebase 托管 React 应用程序访问外部 API
问题描述
我有一个托管在 Firebase 上的 React 应用程序(CRA),并且正在尝试访问外部 Rest API(使用 javascript 的fetch()
),但由于该 API 与 web-app 不在同一个域中,它会引发“CORS”错误. API 的标头Access-Control-Allow-Origin
为*
. 我可以在开发模式下使用代理来解决这个package.json
问题,但是在托管应用程序后似乎没有任何效果。
尝试了以下事情
- 更新
Firebase.json
以包含标题 no-cors
使用时的模式fetch()
解决方案
正确的 CORS 标头是Access-Control-Allow-Origin
,不是Access-Control-Origin
。此外,根据请求的性质,您可能需要预检请求并且可能无法*
用作来源。
在客户端,您无法绕过 CORS——它被明确设计为一种浏览器安全机制,以防止意外的跨域请求。如果您可以控制 API 服务器,则应该能够解决此问题。如果不这样做,您可能需要使用云函数将请求代理到外部 API。
推荐阅读
- nodejs-server - 当我在 aws 服务器上更新我的项目时,所有图像 url 都停止工作
- android - NavHostFragment.findNavController 无法应用于片段错误
- android - 无法获取'https://dl.bintray.com/drummer-aidan/maven/com/afollestad/easyvi../0.3.0/easyvideoplayer-0.3.0。收到状态码 403 ...: Forbidden
- azure - 如何在 azure 逻辑应用程序中将 blob 中的 .txt 文件作为电子邮件的附件发送
- mongodb - 使用mongoose在mongodb中按升序和降序对多个字段进行排序
- html - 编辑托管在 github 页面上的 index.html
- sql - 如何根据选择返回列或将其添加为存储过程中的参数
- ios - iOS 模拟器的屏幕录像去哪了?
- windows - 检测 Rust 可执行文件以进行分析
- java - 为什么在尝试对整个 Spring Batch Job 进行单元测试时出现此错误?没有可用的“org.springframework.batch.core.Job”类型的合格bean