基于Clean-Laravel-Api项目的Laravel Api的CORS问题



我正在尝试制作基于gentritabazi01/clean - laravell - api和Laravel8的larapi的api服务。当我从不同的服务器请求到我的api时,我无法解决CORS的问题。相关内容如下:

从原点'http://segu........com'访问'https://dev.......com/users'的XMLHttpRequest已被CORS策略阻止:对预飞行请求的响应未通过访问控制检查:请求的资源上不存在'Access- control - allow - origin '标头。

自从2天前,我一直在阅读CORS和Laravel的文档,任何解决方案都能解决我的问题。我尝试创建一个中间件并添加必要的头文件:

//InfrastructureHttpMiddlewaresCors
<?php
use Closure;
class Cors
{
public function handle($request, Closure $next)
{
return $next($request)
//Url a la que se le dará acceso en las peticiones
->header("Access-Control-Allow-Origin", "*")
//Métodos que a los que se da acceso
->header("Access-Control-Allow-Methods", "GET, POST, PUT, DELETE")
//Headers de la petición
->header("Access-Control-Allow-Headers", "*"); 
}
}

我尝试使用来自laravel的Fruitcake包,就像在基础项目中使用的一样。

//Infrastructur/Http/Kernel.php
class Kernel extends HttpKernel
{
/**
* The application's global HTTP middleware stack.
*
* These middleware are run during every request to your application.
*
* @var array
*/
protected $middleware = [
IlluminateFoundationHttpMiddlewareCheckForMaintenanceMode::class,
InfrastructureHttpMiddlewaresEncryptCookies::class,
IlluminateCookieMiddlewareAddQueuedCookiesToResponse::class,
IlluminateFoundationHttpMiddlewareConvertEmptyStringsToNull::class,
FruitcakeCorsHandleCors::class,
];

我试图在/public文件夹的index.php文件中添加缺少的标头。

//public/index.php
use IlluminateContractsHttpKernel;
use IlluminateHttpRequest;
define('LARAVEL_START', microtime(true));
header('Access-Control-Allow-Origin: *');
header('Content-Type: application/json; charset = UTF-8');

有人知道怎么解吗?如果有必要,我可以添加更多的代码。

我终于找到了解决办法。我在我的项目中删除了所有与cors相关的内容,并在公共/网络中添加了这一点。配置文件:

<httpProtocol>
<customHeaders>
<add name="Access-Control-Allow-Headers" value="*" />
<add name="Access-Control-Allow-Origin" value="*" />
</customHeaders>
</httpProtocol>

我在系统内部写这个。webServer标记和我的项目又开始工作了。

相关内容

  • 没有找到相关文章

最新更新