最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 科技 - 知识百科 - 正文

专注于处理 PHP 跨域的 CORS 中间件 1.4.0 版本更新

来源:懂视网 责编:小采 时间:2020-11-03 18:24:25
文档

专注于处理 PHP 跨域的 CORS 中间件 1.4.0 版本更新

专注于处理 PHP 跨域的 CORS 中间件 1.4.0 版本更新:专注于处理 PHP 跨域的 CORS 中间件 1.4.0 版本更新,添加了 Swoft 框架支持在很早之前个人发布了一个 PHP CORS 中间件!最初的初衷是开发一个替代 barryvdh/laravel-cors 包的工具,这个包的缺点在于维护不够,然后就是代码量庞大,支持性也不多。当然也有优
推荐度:
导读专注于处理 PHP 跨域的 CORS 中间件 1.4.0 版本更新:专注于处理 PHP 跨域的 CORS 中间件 1.4.0 版本更新,添加了 Swoft 框架支持在很早之前个人发布了一个 PHP CORS 中间件!最初的初衷是开发一个替代 barryvdh/laravel-cors 包的工具,这个包的缺点在于维护不够,然后就是代码量庞大,支持性也不多。当然也有优

本次更新内容的具体使用

PSR-15 中间件

先创建一个实例:

use MedzCorsPSRCorsMiddleware;
// Settings.
$settings = [
 'allow-credentials' => false,
 'allow-headers' => ['*'],
 'expose-headers' => [],
 'origins' => ['*'],
 'methods' => ['*'],
 'max-age' => 0,
];
// $cors = new MedzCorsCors($settings); // Create CORS instance.
// Create CORS middleware instance
$middleware = new CorsMiddleware($settings /* $cors */ /* , true */ /* 是否仅处理预检 */);
// TODO.

可以看出,新版本可以直接从中间件构造参数进行传递设置了,之前版本必须传递一个 MedzCorsCors 实例,当然,新版本也可以直接传递实例。第二个参数可以进行配置是否仅处理预检请求,默认是处理全部请求。

Swoft 中间件

在配置文件 config/properties/app.php 中进行如下配置:

'components' => [
 'custom' => [
 'Medz\Cors\Swoft\',
 ],
],
'cors' => [
 'onlyPreflight' => false, // 是否仅 OPTIONS 预检请求才进行跨域信息附加
 'settings' => [
 /// ... 参考 README 中的 PSR-7
 ],
],

全局使用

打开 app/config/beans/base.php 配置如下:

'serverDispatcher' => [
 'middlewares' => [
 MedzCorsSwoftCorsMiddleware::class,
 ],
],

通过注解使用

通过 @Middleware 和 @Middlewares, 可以很方便的配置中间件到当前的 Controller 和 Action 内。

● 当将此注解应用于 Controller 上,则作用域为整个 Controller

● 将此注解应用于 Action 上,则作用域仅为当前的 Action

use SwoftHttpServerBeanAnnotationController;
use SwoftHttpMessageBeanAnnotationMiddleware;
use SwoftHttpServerBeanAnnotationRequestMapping;
use MedzCorsSwoftCorsMiddleware;
/**
 * Setting Controller middleware.
 * 
 * @Controller("middleware")
 * @Middleware(CorsMiddleware::class)
 */
class CorsOneController
{
 //
}
/**
 * Setting Action middleware.
 */
class CorsTwoController
{
 /**
 * @RequestMapping()
 * @Middleware(CorsMiddleware::class)
 */
 public function corsAction(): array
 {
 return [
 'message' => 'The action using CORS.'
 ];
 }
}

其他

CORS 项目地址 https://github.com/medz/cors ,如果喜欢,欢迎 Star 欢迎 Issues 欢迎 PR。

Seven 的代码太渣,欢迎关注我的新拓展包 medz/cors 解决 PHP 项目程序设置跨域需求。

文档

专注于处理 PHP 跨域的 CORS 中间件 1.4.0 版本更新

专注于处理 PHP 跨域的 CORS 中间件 1.4.0 版本更新:专注于处理 PHP 跨域的 CORS 中间件 1.4.0 版本更新,添加了 Swoft 框架支持在很早之前个人发布了一个 PHP CORS 中间件!最初的初衷是开发一个替代 barryvdh/laravel-cors 包的工具,这个包的缺点在于维护不够,然后就是代码量庞大,支持性也不多。当然也有优
推荐度:
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top