api - 基于 Clean-Laravel-Api 项目的 Laravel Api 的 CORS 问题
问题描述
我正在尝试基于 gentritabazi01/Clean-Laravel-Api和 Laravel8 的 larapi 制作和 api 服务。当我从不同的服务器向我的 api 发出请求时,我无法解决 CORS 的问题。相关内容如下:
从源“http://segu........com”访问“https://dev........com/users”处的 XMLHttpRequest 已被 CORS 策略阻止:对预检请求的响应未通过访问控制检查:请求的资源上不存在“Access-Control-Allow-Origin”标头。
从两天前开始,我一直在阅读 CORS 和 Laravel 的文档,任何解决方案都可以解决我的问题。我尝试创建一个中间件并添加必要的标头:
//Infrastructure\Http\Middlewares\Cors
<?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 = [
\Illuminate\Foundation\Http\Middleware\CheckForMaintenanceMode::class,
\Infrastructure\Http\Middlewares\EncryptCookies::class,
\Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class,
\Illuminate\Foundation\Http\Middleware\ConvertEmptyStringsToNull::class,
\Fruitcake\Cors\HandleCors::class,
];
我试图在 /public 文件夹中添加 index.php 文件中缺少的标题。
//public/index.php
use Illuminate\Contracts\Http\Kernel;
use Illuminate\Http\Request;
define('LARAVEL_START', microtime(true));
header('Access-Control-Allow-Origin: *');
header('Content-Type: application/json; charset = UTF-8');
有人知道如何解决吗?如果有必要,我可以添加更多代码。
解决方案
最后,我找到了解决方案。我在我的项目中删除了所有与 cors 相关的内容,并将其添加到 public/web.config 文件中:
<httpProtocol>
<customHeaders>
<add name="Access-Control-Allow-Headers" value="*" />
<add name="Access-Control-Allow-Origin" value="*" />
</customHeaders>
</httpProtocol>
我在 system.webServer 标记中写了这个,我的项目又开始工作了。
推荐阅读
- javascript - Uncaught TypeError: Object(...) is not a function when bundled with WebPack 4
- python - 将 SciPy 优化限制为整数
- aem - 如何在使用条件语句的同时附加一个字符?
- javascript - 用 JS 计算一个值并将该值存储在数据库中
- react-native - 当我们平移本机反应时,如何检测对象的 x 位置?
- javascript - React - 尝试在 reduce() 函数中引用 this.props
- biztalk - BizTalk Server TMS 警告 12223
- python - 多处理共享变量(类型自创)
- tensorflow - tfjs-examples/date-conversion-attention 中使用的注意力模型是什么?
- javascript - 如何遍历特定 div 标签中的所有标题标签?