不幸的是,您需要以某种方式代理该请求。出于安全原因,CORS 请求将被浏览器阻止。为了避免这种情况,后端需要为您注入允许原始标头。
解决方案取决于您需要代理、开发或生产的位置。
开发环境或node.js生产网络服务器
在这种情况下,最简单的方法是使用'http 代理中间件'npm 包
const proxy = require('http-proxy-middleware');
module.exports = function (app) {
app.use(proxy('/api', {
target: 'http://www.api.com',
logLevel: 'debug',
changeOrigin: true
}));
};
生产 - 您拥有完全访问权限的 Web 服务器检查以下页面以了解如何在您的网络服务器上启用此类代理:
https://enable-cors.org/server.html https://enable-cors.org/server.html
生产 - 静态托管/Web 服务器,无完全访问权限
如果您的主机支持 PHP,您可以添加一个 php 脚本,例如:https://github.com/softius/php-cross-domain-proxy https://github.com/softius/php-cross-domain-proxy
然后从您的应用程序向脚本发出请求,脚本将转发该请求并在响应中注入标头
如果您的主机不支持 PHP不幸的是,您将需要依赖一种类似于您所使用的解决方案。
为了避免依赖第三方服务,您应该在您将使用的地方部署代理脚本。
我的建议是:
转移到支持 php 的主机:)(Netlify 可能是一个解决方案,但我不确定)
您可以将自己的基于 Node.js 的代理脚本部署到 Firebase(例如 Firebase 函数),以确保它不会神奇地崩溃,并且免费计划可以处理您的请求量。
创建一个免费的 Amazon AWS 帐户,您将在其中免费获得一年的最小实例,并在那里运行带有 nginx 代理的 ubuntu 服务器。