phapi/middleware-cors

此包已被废弃,不再维护。没有建议的替代包。

处理HTTP访问控制(CORS)请求的中间件

1.0.1 2015-11-23 09:56 UTC

This package is not auto-updated.

Last update: 2021-02-05 22:09:33 UTC


README

Build status Code Climate Test Coverage

跨站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框架中,但如果您需要安装它,可以通过PackagistComposer进行安装。

$ 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 框架集成的更多信息,请参阅配置文档

异常

当需要但缺少 originmethodAccess-Control-Request-Method 头部时,会抛出 BadRequest 异常。

Phapi

该中间件是 Phapi 框架使用的 Phapi 包。中间件也符合 PSR-7 规范,并实现了 Phapi 中间件契约

许可证

CORS 中间件采用 MIT 许可证 - 有关详细信息,请参阅 license.md 文件。

贡献

欢迎贡献、修复错误等贡献