我是React项目部署的新手。该API服务器是Laravel项目,它托管在Siteground中。
我确信API是Postman的作品。反应项目在localhost:3000
上运行。为了使用API提取一些数据,我将proxy: "http://api server domain"
添加到了package.json
中。
当我要获取数据时,它总是显示“不允许的方法”。
因此,我已将API服务器托管在本地主机上。在这种情况下,我已经将proxy: "http://localhost:8000
添加到package.json中,它可以正常工作。
我该如何解决这个问题?
答案 0 :(得分:1)
您似乎遇到了 CORS (跨源资源共享)问题。
根据MDN,CORS是一种机制,它使用附加的HTTP标头来告知浏览器以使Web应用程序在一个来源运行,并从另一个来源访问选定的资源。当Web应用程序请求其来源(域,协议或端口)不同的资源时,它将执行跨域HTTP请求。
一个跨域请求的示例:https://domain-a.com提供的前端JavaScript代码使用XMLHttpRequest来向https://domain-b.com/data.json发出请求。
出于安全原因,浏览器限制了从脚本启动的跨域HTTP请求。例如,XMLHttpRequest和Fetch API遵循同源策略。这意味着使用这些API的Web应用程序只能从加载该应用程序的相同来源请求资源,除非来自其他来源的响应包括正确的CORS标头。
更多技术细节HERE。
解决:
您需要在API服务上启用CORS。
如果您无权配置Apache,则仍然可以从PHP脚本发送标头。在您的PHP脚本中添加以下内容是一种情况:
<?php header("Access-Control-Allow-Origin: *");
以下链接显示了如何:How to enable CORS on PHP
由于您使用的是Laravel,使用中间件可能是解决CORS情况的好方法。
CORS Middleware for Laravel应该可以为您提供帮助。