waka / wn-wakapi-plugin

用于管理API和连接的插件

安装次数: 4

依赖: 0

建议者: 0

安全: 0

星标: 0

关注者: 2

分支: 0

开放问题: 0

类型:winter-plugin

dev-master 2023-09-23 11:56 UTC

This package is auto-updated.

Last update: 2024-09-10 11:56:03 UTC


README

此插件基于 https://github.com/barryvdh/laravel-cors

插件的所有配置都可以通过后端设置完成。

支持以下CORS头

  • Access-Control-Allow-Origin
  • Access-Control-Allow-Headers
  • Access-Control-Allow-Methods
  • Access-Control-Allow-Credentials
  • Access-Control-Expose-Headers
  • Access-Control-Max-Age

目前,这些头信息会发送到每个请求。目前无法按路由进行配置。

注意

我在Cors类中进行了修改

public function handle(Request $request, $type = HttpKernelInterface::MASTER_REQUEST, $catch = true)
par 
public function handle(Request $request, int $type = self::MAIN_REQUEST, bool $catch = true): Response

我还修改了HandlePreflight的handle方法。看起来似乎可以工作,但我没有测量其影响

public function handle($request, Closure $next)
{
    $response = $next($request);
    if ($this->cors->isPreflightRequest($request) && $this->hasMatchingCorsRoute($request)) {
        $preflight = $this->cors->handlePreflightRequest($request);
        $response->headers->add($preflight->headers->all());
    }

    return $response;
}
par 
public function handle($request, Closure $next)
{
    $response = $next($request);
    if ($this->cors->isPreflightRequest($request) && $this->hasMatchingCorsRoute($request)) {
        $preflight = $this->cors->handlePreflightRequest($request);
        $response = response('', 200);
        $response->headers->add($preflight->headers->all());
    }

    return $response;
}

设置

安装插件后,访问October CMS后端设置中的CORS设置页面。

您可以将 * 添加到 允许的来源允许的头信息允许的方法 中,以允许来自任何地方的任何类型的CORS请求。

建议您对这些设置更加明确。您可以通过重复字段为每个头信息添加值。

为了插件按预期工作,请务必设置这些初始设置!

文件系统配置

作为后端设置的替代方案,您可以在插件根目录中创建一个 config/config.php 文件来配置它。

文件系统配置将覆盖任何定义的后端设置。

<?php
// plugins/waka/wakapi/config/config.php
return [
    'supportsCredentials' => true,
    'maxAge'              => 3600,
    'allowedOrigins'      => ['*'],
    'allowedHeaders'      => ['*'],
    'allowedMethods'      => ['GET', 'POST'],
    'exposedHeaders'      => [''],
];