CORS/JavaScript/Laravel:向数字海洋服务器发送请求并接收数据(标题问题)
所以,我要做的是使用数字海洋液滴作为api,用于托管在不同服务器上的应用程序。目前,我正在开发这个服务器,它来自我的localhost:3000 在我的客户端代码(JavaScript)中,我有: 最后,在我的Laravel应用程序(Laravel Framework 5.8.18)中,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
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");