* @license http://www.apache.org/licenses/LICENSE-2.0 * @link http://phpsx.org */ class CORS implements FilterInterface { /** @var string|\Closure */ protected $allowOrigin; /** @var array */ protected $allowMethods; /** @var array */ protected $allowHeaders; /** @var boolean */ protected $allowCredentials; /** * @param string|\Closure $allowOrigin * @param array|null $allowMethods * @param array|null $allowHeaders * @param boolean|null $allowCredentials */ public function __construct( $allowOrigin, array $allowMethods = null, array $allowHeaders = null, $allowCredentials = null, ) { $this->allowOrigin = $allowOrigin; $this->allowMethods = $allowMethods; $this->allowHeaders = $allowHeaders; $this->allowCredentials = $allowCredentials; } public function handle(RequestInterface $request, ResponseInterface $response, FilterChainInterface $filterChain) { $allow = false; $origin = $request->getHeader('Origin'); if (!empty($origin)) { if (is_string($this->allowOrigin)) { $response->setHeader('Access-Control-Allow-Origin', $this->allowOrigin); $allow = true; } elseif ($this->allowOrigin instanceof \Closure) { $func = $this->allowOrigin; if ($func($origin)) { $response->setHeader('Access-Control-Allow-Origin', $origin); $response->addHeader('Vary', 'Origin'); $allow = true; } } if ($allow && $this->allowCredentials) { $response->setHeader('Access-Control-Allow-Credentials', 'true'); } } if ($allow && $request->getMethod() == 'OPTIONS') { $method = $request->getHeader('Access-Control-Request-Method'); if (!empty($method)) { $response->setHeader('Access-Control-Allow-Methods', implode(', ', $this->allowMethods)); } $headers = $request->getHeader('Access-Control-Request-Headers'); if (!empty($headers)) { $response->setHeader('Access-Control-Allow-Headers', implode(', ', $this->allowHeaders)); } $response->setHeader('Access-Control-Expose-Headers', '*'); } $filterChain->handle($request, $response); } public static function allowOrigin($allowOrigin) { return new self($allowOrigin); } } __halt_compiler();----SIGNATURE:----Su5GzbCx6DcZy4mJn3/9NY4tte7KIT9pyoGlTGDOTByLWoOqBjJN4TZ3kXLXHfYZJxy0ofnrcDoajkzqSyXZyMSqIvyhWwZeo7dgujLU0iNQfWxG3SfQ/CNzDMVDAckZs37hoqsHMGHA5dKBZXXg0DUXOY5Z1/e/dBPSFn46JL6o7nY1mpen4mbgS3JrREVUvhJ2RA2Sd1cBjLVHbw09UKU4LReznUUX9HySunbkwk5lmeLW8GbMT6o/jwXWJuQbV96gITU63CT7OMTat6kBRERym/LcvArpbU7vSKAJtBrtVOgctv/QALEXCDFRSjnqLE4HgfEpSrv/MbSlMSXCxreSTGxTgTwvVmPBiJSwt68RcHSBG4W2d0g1KwEZgILjKxgbZVF6vWadXfi1j9Y6xrELmIprx0B+5ONzkzXLzxFczlRCGU//0WkSOV4gA0LLYGlsyA+fmVsS8ixf7EwDdJaZbbBVtVSpDx6qsK4VV6jgnNzWh2XLR/EdSER8QvneFLV4WMaW69T4ZHfGQOaoXB9+7BRSdlI+02nBTcrXSCutOAyTDCvGv67LPj0szah59sdNBUTylML75AuZLtuwuTiQ3dJjX+qrzXj0UHRaQH+dL34OeB1tpQphMahtJD873Bg1GcSH0vgtPptWGrhYwd0rw1rm8GwOIXljm1ryEKA=----ATTACHMENT:----MjgyMTU4OTg0OTE2MjI2MSAzNDAzNzU2MDIyOTQwMzU1IDg3MjEzNDExNjcxODUzMw==