Fix OPTIONS

This commit is contained in:
Philipp 2022-01-02 22:17:04 +01:00
parent eaad220738
commit c7f2ba213b
No known key found for this signature in database
GPG Key ID: 24A7501396EB5432
4 changed files with 9 additions and 6 deletions

View File

@ -32,6 +32,7 @@ use Friendica\Core\Hook;
use Friendica\Core\L10n; use Friendica\Core\L10n;
use Friendica\Core\Renderer; use Friendica\Core\Renderer;
use Friendica\Core\Theme; use Friendica\Core\Theme;
use Friendica\DI;
use Friendica\Network\HTTPException; use Friendica\Network\HTTPException;
use Friendica\Util\Network; use Friendica\Util\Network;
use Friendica\Util\Strings; use Friendica\Util\Strings;
@ -378,7 +379,7 @@ class Page implements ArrayAccess
*/ */
public function exit(ResponseInterface $response) public function exit(ResponseInterface $response)
{ {
header(sprintf("HTTP/%s %i %s", header(sprintf("HTTP/%s %s %s",
$response->getProtocolVersion(), $response->getProtocolVersion(),
$response->getStatusCode(), $response->getStatusCode(),
$response->getReasonPhrase()) $response->getReasonPhrase())

View File

@ -191,23 +191,23 @@ abstract class BaseModule implements ICanHandleRequests
public function run(array $request = []): ResponseInterface public function run(array $request = []): ResponseInterface
{ {
// @see https://github.com/tootsuite/mastodon/blob/c3aef491d66aec743a3a53e934a494f653745b61/config/initializers/cors.rb // @see https://github.com/tootsuite/mastodon/blob/c3aef491d66aec743a3a53e934a494f653745b61/config/initializers/cors.rb
if (substr($request['pagename'] ?? '', 0, 12) == '.well-known/') { if (substr($this->args->getQueryString(), 0, 12) == '.well-known/') {
$this->response->setHeader('*', 'Access-Control-Allow-Origin'); $this->response->setHeader('*', 'Access-Control-Allow-Origin');
$this->response->setHeader('*', 'Access-Control-Allow-Headers'); $this->response->setHeader('*', 'Access-Control-Allow-Headers');
$this->response->setHeader(Router::GET, 'Access-Control-Allow-Methods'); $this->response->setHeader(Router::GET, 'Access-Control-Allow-Methods');
$this->response->setHeader('false', 'Access-Control-Allow-Credentials'); $this->response->setHeader('false', 'Access-Control-Allow-Credentials');
} elseif (substr($request['pagename'] ?? '', 0, 8) == 'profile/') { } elseif (substr($this->args->getQueryString(), 0, 8) == 'profile/') {
$this->response->setHeader('*', 'Access-Control-Allow-Origin'); $this->response->setHeader('*', 'Access-Control-Allow-Origin');
$this->response->setHeader('*', 'Access-Control-Allow-Headers'); $this->response->setHeader('*', 'Access-Control-Allow-Headers');
$this->response->setHeader(Router::GET, 'Access-Control-Allow-Methods'); $this->response->setHeader(Router::GET, 'Access-Control-Allow-Methods');
$this->response->setHeader('false', 'Access-Control-Allow-Credentials'); $this->response->setHeader('false', 'Access-Control-Allow-Credentials');
} elseif (substr($request['pagename'] ?? '', 0, 4) == 'api/') { } elseif (substr($this->args->getQueryString(), 0, 4) == 'api/') {
$this->response->setHeader('*', 'Access-Control-Allow-Origin'); $this->response->setHeader('*', 'Access-Control-Allow-Origin');
$this->response->setHeader('*', 'Access-Control-Allow-Headers'); $this->response->setHeader('*', 'Access-Control-Allow-Headers');
$this->response->setHeader(implode(',', Router::ALLOWED_METHODS), 'Access-Control-Allow-Methods'); $this->response->setHeader(implode(',', Router::ALLOWED_METHODS), 'Access-Control-Allow-Methods');
$this->response->setHeader('false', 'Access-Control-Allow-Credentials'); $this->response->setHeader('false', 'Access-Control-Allow-Credentials');
$this->response->setHeader('Link', 'Access-Control-Expose-Headers'); $this->response->setHeader('Link', 'Access-Control-Expose-Headers');
} elseif (substr($request['pagename'] ?? '', 0, 11) == 'oauth/token') { } elseif (substr($this->args->getQueryString(), 0, 11) == 'oauth/token') {
$this->response->setHeader('*', 'Access-Control-Allow-Origin'); $this->response->setHeader('*', 'Access-Control-Allow-Origin');
$this->response->setHeader('*', 'Access-Control-Allow-Headers'); $this->response->setHeader('*', 'Access-Control-Allow-Headers');
$this->response->setHeader(Router::POST, 'Access-Control-Allow-Methods'); $this->response->setHeader(Router::POST, 'Access-Control-Allow-Methods');

View File

@ -140,6 +140,6 @@ class Response implements ICanCreateResponses
// Setting the response type as an X-header for direct usage // Setting the response type as an X-header for direct usage
$this->headers[static::X_HEADER] = $this->type; $this->headers[static::X_HEADER] = $this->type;
return new \GuzzleHttp\Psr7\Response($this->status, $this->headers, $this->content, $this->reason); return new \GuzzleHttp\Psr7\Response($this->status, $this->headers, $this->content, '1.1', $this->reason);
} }
} }

View File

@ -2,6 +2,8 @@
namespace Friendica\Test\src\Module\Special; namespace Friendica\Test\src\Module\Special;
use Friendica\App\Arguments;
use Friendica\App\Page;
use Friendica\App\Router; use Friendica\App\Router;
use Friendica\Capabilities\ICanCreateResponses; use Friendica\Capabilities\ICanCreateResponses;
use Friendica\DI; use Friendica\DI;