API 服务器的 React 代理问题

React proxy issue with the API server

我是react项目部署的新手。 API 服务器是 Laravel 项目,托管在 Siteground 上。

我确信 APIs 是 Postman 的作品。 React 项目在 localhost:3000 上运行。为了使用 API 获取一些数据,我将 proxy: "http://api server domain" 添加到 package.json.

当我要获取数据时它总是说"Not allowed method"。

所以我在本地主机上托管了 API 服务器。在这种情况下,我将 proxy: "http://localhost:8000 添加到 package.json 中,效果很好。

我该如何解决这个问题?

您似乎遇到了 CORS(Cross-Origin 资源共享)问题。

根据 MDN,CORS 是一种机制,它使用额外的 HTTP headers 告诉浏览器为一个来源的 Web 应用程序 运行 提供从不同来源访问选定资源的权限。 Web 应用程序在请求来源(域、协议或端口)与其自身不同的资源时执行 cross-origin HTTP 请求。

cross-origin 请求示例:front-end JavaScript 代码来自 https://domain-a.com uses XMLHttpRequest to make a request for https://domain-b.com/data.json

出于安全原因,浏览器限制 cross-origin 从脚本发起的 HTTP 请求。例如,XMLHttpRequest 和 Fetch API 遵循 same-origin 策略。这意味着使用这些 APIs 的 Web 应用程序只能从加载应用程序的同一来源请求资源,除非来自其他来源的响应包含正确的 CORS headers。

更多技术细节HERE

求解:

您需要在 API 服务上启用 CORS。

如果您无权配置 Apache,您仍然可以从 PHP 脚本发送 header。这是将以下内容添加到您的 PHP 脚本的情况:

 <?php header("Access-Control-Allow-Origin: *");

以下 link 显示如何:How to enable CORS on PHP

由于您正在使用 Laravel,使用中间件可能是解决 CORS 情况的好方法。

CORS Middleware for Laravel 应该能帮到你。