反应应用程序中的CORS问题,无法上传图像

Posted

技术标签:

【中文标题】反应应用程序中的CORS问题,无法上传图像【英文标题】:CORS issue in react app, can't upload images 【发布时间】:2020-11-11 18:43:18 【问题描述】:

我将 laravel 用于 api,将 react js 用于前端。但是每当我尝试将图像上传到服务器时,都会遇到 CORS 问题。

'api-url has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource. If an opaque response serves your needs, set the request's mode to 'no-cors' to fetch the resource with CORS disabled.'

有时有效,但有时无效。有没有永久的解决办法?

我正在为 cors 使用以下插件。 https://github.com/fruitcake/laravel-cors

cors.php

return[
    'paths' => ['api/*'],
    'allowed_methods' => ['*'],
    'allowed_origins' => ['*'],
    'allowed_origins_patterns' => [],
    'allowed_headers' => ['*'],
    'exposed_headers' => [],
    'max_age' => 0,
    'supports_credentials' => false,]

【问题讨论】:

这很大程度上取决于后端服务器的配置。你可以访问它吗? 你在后台配置CORS了吗? 我可以访问服务器。我应该改变什么才能让它工作? 您需要在服务器上定义CORS 策略。 wiki @NazmulHasan 现在哪个请求有效,哪个无效? 【参考方案1】:

截至文档中,您的代码中缺少以下内容:

如果可能,请使用禁用 CSRF 保护的路由组。否则你可以为App\Http\Middleware\VerifyCsrfToken中的某些请求禁用CSRF:

protected $except = [
 'api/*'
]

更重要的是,您应该将 CORS 中间件移动到数组的顶部

要允许所有路由使用 CORS,请在 app/Http/Kernel.php 类的 $middleware 属性顶部添加 HandleCors 中间件:

protected $middleware = [
 \Fruitcake\Cors\HandleCors::class,
];

【讨论】:

以上是关于反应应用程序中的CORS问题,无法上传图像的主要内容,如果未能解决你的问题,请参考以下文章

反应原生无法将图像上传到firebase

Hapi、Joi 和 Formdata 上传出现神秘的间歇性 CORS 错误

仅在 iOS 移动 Safari 中上传图像时出现错误的 CORS 失败

从外部api获取数据时反应应用程序中的Cors错误[重复]

使用 fetch API 的 CORS 错误 - 反应创建应用程序

反应本机图像获取/上传