Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/463.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
CORS/JavaScript/Laravel:向数字海洋服务器发送请求并接收数据(标题问题)_Javascript_Laravel_Nginx - Fatal编程技术网

CORS/JavaScript/Laravel:向数字海洋服务器发送请求并接收数据(标题问题)

CORS/JavaScript/Laravel:向数字海洋服务器发送请求并接收数据(标题问题),javascript,laravel,nginx,Javascript,Laravel,Nginx,所以,我要做的是使用数字海洋液滴作为api,用于托管在不同服务器上的应用程序。目前,我正在开发这个服务器,它来自我的localhost:3000 在我的客户端代码(JavaScript)中,我有: 最后,在我的Laravel应用程序(Laravel Framework 5.8.18)中,routes/api.php下有一个路由: Route::post('/create-image', 'CreateData'); 我有一个控制器CreateData.php: <?php namesp

所以,我要做的是使用数字海洋液滴作为api,用于托管在不同服务器上的应用程序。目前,我正在开发这个服务器,它来自我的localhost:3000

在我的客户端代码(JavaScript)中,我有:

最后,在我的Laravel应用程序(Laravel Framework 5.8.18)中,
routes/api.php
下有一个路由:

Route::post('/create-image', 'CreateData');
我有一个控制器
CreateData.php

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;

class CreateImage extends Controller
{
    /**
     * Handle the incoming request.
     *
     * @param  \Illuminate\Http\Request  $request
     * @return \Illuminate\Http\Response
     */
    public function __invoke(Request $request)
    {
        return response('Hello World', 200)
            ->header('Content-Type', 'application/json; charset=UTF-8')
            ->header('Access-Control-Allow-Origin', '*');
    }
}

有一个简单的解决方案,可以在本地机器上进行测试

您可以只放入索引文件以允许cors,但我建议您为此构建中间件

这里有一个链接,解释得很好:)

您也可以将其放在index.php中

header('Access-Control-Allow-Origin: *');
header('Access-Control-Allow-Methods: GET, POST, PATCH, PUT, DELETE, OPTIONS');
header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept");

希望它有帮助:D

好的,我尝试使用如上所述的中间件类,但仍然阻止了跨源请求:同一源策略不允许在读取远程资源(原因:CORS标头“Access Control Allow Origin”丢失)我删除了nginx默认配置中的所有内容将其放入index.php标头中('Access-Control-Allow-Origin:');标题('Access-Control-Allow-Methods:GET、POST、PATCH、PUT、DELETE、OPTIONS');标题(“Access-Control-Allow-Headers”、“Origin、X-Requested-With、Content-Type、Accept”);“在网络选项卡下,我找不到404”-因此问题与CORS没有任何关系。您的URL搞错了。(除非是关于飞行前选项请求,在这种情况下,您可能会忘记处理该请求,但您没有引用完整的错误消息或在“网络”选项卡上提供所有详细信息)我强烈建议使用CORS处理。
header('Access-Control-Allow-Origin: *');
header('Access-Control-Allow-Methods: GET, POST, PATCH, PUT, DELETE, OPTIONS');
header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept");