从React前端调用PHP Lumen后端并解决CORS问题

时间:2019-09-11 16:49:25

标签: javascript php laravel cors lumen

所以基本上我已经使用Lumens作为我的后端api(在localhost:8000处)。现在,在我的前端React应用程序上(在localhost:3000上),我这样向后端发出请求:

fetch(`http://localhost:8000/feedback/add`, {
            method: 'POST',
            headers: {
                'Accept': 'application/json',
                'Content-Type': 'application/json',
            },
            body: JSON.stringify({
                feedback: this.state.feedback,
                email: this.state.email,
            }),
        })

但是,当我向/从其他服务器发出请求时,我一直遇到cors问题。 我一直在搜寻并尝试找出解决方案,但是似乎有很多不同的想法,例如在Lumens中使用中间件(许多不同的解决方案)或设置模式:无核心前端。但是我真的不知道该怎么办,因为它们似乎仍然会引起进一步的问题。

有人有类似的设置吗?一劳永逸地解决这个问题的方法是什么?

1 个答案:

答案 0 :(得分:1)

我已经开发了一些以Laravel为后端的SPA。默认情况下,Laravel保护您免受未经授权的API调用的侵害,这听起来像是您正在运行的API。

我建议您允许通过第三方域调用后端的方法是使用composer安装Spatie CORS软件包:

composer require spatie/laravel-cors

此软件包与Laravel和Lumen兼容。自述文件包含您需要的所有安装说明。

安装正确后,您将可以指定哪些第三方域可以访问您的API:

'allow_origins' => [

    '*', // all domains are allowed... or set them up individually:

    'https://my-site-1.com',
    'https://my-site-2.com', 
],

Spatie CORS软件包:https://github.com/spatie/laravel-cors