phapi / middleware-cors
处理HTTP访问控制(CORS)请求的中间件
Requires
- php: >=5.6.0
- phapi/contract: 1.*
- phapi/exception: 1.*
Requires (Dev)
- codeclimate/php-test-reporter: dev-master
- mockery/mockery: 0.9.*
- phpunit/phpunit: 4.*
This package is not auto-updated.
Last update: 2021-02-05 22:09:33 UTC
README
跨站HTTP请求是针对来自与请求资源域不同的域的资源进行的HTTP请求。例如,从域A(http://domaina.example)加载的资源,如HTML网页,使用img元素(http://domainb.foo/image.jpg)请求来自域B(http://domainb.foo)的资源,如图片。这在当今的互联网上非常普遍——页面以跨站方式加载多个资源,包括CSS样式表、图片和脚本以及其他资源。
从脚本内部发起的跨站HTTP请求一直受到众所周知的限制,出于众所周知的安全原因。例如,使用XMLHttpRequest对象发出的HTTP请求受到同源策略的限制。特别是,这意味着使用XMLHttpRequest的Web应用程序只能向加载它的域发出HTTP请求,而不能向其他域发出请求。开发人员表达了希望安全地发展像XMLHttpRequest这样的功能以进行跨站请求,以在Web应用程序中实现更好的、更安全的混合应用。
来源:https://mdn.org.cn/en-US/docs/Web/HTTP/Access_control_CORS
CORS中间件处理应用程序的这些请求。
安装
此中间件默认不包含在Phapi框架中,但如果您需要安装它,可以通过Packagist和Composer进行安装。
$ php composer.phar require phapi/middleware-cors:1.*
配置
配置允许我们指定适用于包含“origin”头的所有请求的各种规则。如果没有包含此类头,则请求不被视为跨站请求。
在其最简单的形式中,它可以配置如下
<?php $corsOptions = [ 'allowedOrigins' => ['*'], 'allowedMethods' => ['*'], 'allowedHeaders' => ['*'], 'exposedHeaders' => [], 'maxAge' => 3600, 'supportsCredentials' => false, ]; $pipeline->pipe(new \Phapi\Middleware\Cors($corsOptions));
说明
-
allowedOrigins 指定允许向API发起CORS请求的不同来源。"*"表示没有限制。将每个来源作为数组中的单独值添加:['http://foo.bar', 'http://domain.example']
-
allowedMethods 是允许的方法列表。示例:['GET', 'POST', 'OPTIONS']
-
allowedHeaders 指定客户端在CORS请求期间允许发送的头部。示例:['Client-ID', 'X-Modified']。请注意,一些默认头部是允许的,有关更多信息,请参阅Mozilla开发者页面。
-
exposedHeaders 是允许浏览器暴露给用户/脚本的头部列表。示例 ['X-Rate-Limit-Remaining']
-
maxAge 指定客户端可以缓存此信息的时间(以秒为单位)。
-
supportsCredentials 指定了 API 是否允许/支持在 CORS 请求中携带凭据。
有关如何配置与 Phapi 框架集成的更多信息,请参阅配置文档。
异常
当需要但缺少 origin、method 或 Access-Control-Request-Method
头部时,会抛出 BadRequest
异常。
Phapi
该中间件是 Phapi 框架使用的 Phapi 包。中间件也符合 PSR-7 规范,并实现了 Phapi 中间件契约。
许可证
CORS 中间件采用 MIT 许可证 - 有关详细信息,请参阅 license.md 文件。
贡献
欢迎贡献、修复错误等贡献。