damoclark / simple-cors
用于发送 CORS 头的简单库
v1.0.1
2017-10-18 04:12 UTC
Requires
- sabre/http: ~4.2
This package is not auto-updated.
Last update: 2024-09-29 05:07:59 UTC
README
概述
这是一个提供跨源资源共享(CORS)验证的简单库。该库不受任何特定框架的约束,只有一个依赖项。
CORS 配置通过一个 ini
文件定义,其路径可以从可配置的 web 服务器环境变量中确定。
安装
使用 composer 需求 damoclark/simple-cors
。
简单用法
准备一个包含您的 CORS 安全配置的 ini
文件
; https://mdn.org.cn/en-US/docs/Web/HTTP/Headers/Access-Control-Allow-Headers ; Access-Control-Allow-Headers: <header-name>, <header-name>, ... allowedHeaders[] = 'X-HEADER' ; https://mdn.org.cn/en-US/docs/Web/HTTP/Headers/Access-Control-Allow-Methods ; Access-Control-Allow-Methods: <method>, <method>, ... allowedMethods = 'GET,POST' ; https://mdn.org.cn/en-US/docs/Web/HTTP/Headers/Access-Control-Allow-Origin ; Access-Control-Allow-Origin: * ; Access-Control-Allow-Origin: <origin> allowedOrigins = '*' ; https://mdn.org.cn/en-US/docs/Web/HTTP/Headers/Access-Control-Expose-Headers ; Access-Control-Expose-Headers: <header-name>, <header-name>, ... ; exposedHeaders[] = ... ; Access-Control-Max-Age: <delta-seconds> ; maxAge = 86400 <- 1 day maxAge = 86400 ; https://mdn.org.cn/en-US/docs/Web/HTTP/Headers/Access-Control-Allow-Credentials ; Access-Control-Allow-Credentials: true supportsCredentials = true
通过您的 web 服务器配置设置环境变量 CORSCONF
<VirtualHost *>
...
SetEnv CORSCONF "/path/to/cors.ini"
...
</VirtualHost>
将以下行添加到您的脚本开头(在需要 composer 自动加载器之后)
// Respond with cors headers (where path to config ini file is stored in `CORSCONF` environment variable) $cors = new \damoclark\SimpleCors\SimpleCors() ; $cors->handle() or exit() ;
handle()
方法将返回 true,如果您的脚本应该继续执行。以下情况包括:
- 这是一个有效的 CORS 请求
- 这不是一个 CORS 请求
该方法将在以下情况下返回 false:
- 当方法不被允许时
- 当源不被允许时
- 当请求的头部不被允许时
- 当它是一个预检请求(OPTIONS 请求方法)时
在最后一种情况(预检)中,handle()
方法已经向客户端发送了响应头部,因此您的脚本仍然可以安全地在此点终止,如示例所示
如果您不希望脚本在不是 CORS 请求的情况下继续执行,则可以使用以下模式
// Respond with cors headers (where path to config ini file is stored in `CORSCONF` environment variable) $cors = new \damoclark\SimpleCors\SimpleCors() ; $cors->isCorsRequest() or exit() ; $cors->handle() or exit() ;
贡献
欢迎通过拉取请求进行贡献。
许可证
版权 (c) 2017 Damien Clark,Damo's World
许可协议为 LGPLv3
本软件由版权所有者和贡献者提供,“按原样”提供,并且不提供任何明示或暗示的保证,包括但不限于适销性保证和针对特定目的的适用性保证。在任何情况下,Damien Clark 对任何直接、间接、偶然、特殊、示范性或后果性的损害(包括但不限于替代商品或服务的采购;使用、数据或利润的损失;或业务中断)不承担责任,无论此类损害是基于合同、严格责任还是侵权(包括疏忽或其他),即使已告知此类损害的可能性。