Skip to content

Commit

Permalink
fix cors issue with api
Browse files Browse the repository at this point in the history
  • Loading branch information
creme332 committed Aug 31, 2024
1 parent a247e54 commit 565aee4
Showing 1 changed file with 39 additions and 2 deletions.
41 changes: 39 additions & 2 deletions src/controllers/API.php
Original file line number Diff line number Diff line change
Expand Up @@ -26,12 +26,49 @@ public function __construct()
// Set the Content-Type header to application/json
header("Content-Type:application/json");

// Allow access from any origin (CORS)
header('Access-Control-Allow-Origin: *');
// Allow access from any origin to avoid CORS issues
$this->cors();

$this->resource = Utility::splitURL()[2] ?? "";
}

/**
* An example CORS-compliant method. It will allow any GET, POST, or OPTIONS requests from any
* origin.
*
* In a production environment, you probably want to be more restrictive, but this gives you
* the general idea of what is involved. For the nitty-gritty low-down, read:
*
* - https://developer.mozilla.org/en/HTTP_access_control
* - https://fetch.spec.whatwg.org/#http-cors-protocol
* Reference: https://stackoverflow.com/a/9866124/17627866
*/
private function cors(): void
{
// Allow from any origin
if (isset($_SERVER['HTTP_ORIGIN'])) {
// Decide if the origin in $_SERVER['HTTP_ORIGIN'] is one
// you want to allow, and if so:
header("Access-Control-Allow-Origin: {$_SERVER['HTTP_ORIGIN']}");
header('Access-Control-Allow-Credentials: true');
header('Access-Control-Max-Age: 86400'); // cache for 1 day
}

// Access-Control headers are received during OPTIONS requests
if ($_SERVER['REQUEST_METHOD'] == 'OPTIONS') {
if (isset($_SERVER['HTTP_ACCESS_CONTROL_REQUEST_METHOD'])) // may also be using PUT, PATCH, HEAD etc
{
header("Access-Control-Allow-Methods: GET, POST, OPTIONS");
}

if (isset($_SERVER['HTTP_ACCESS_CONTROL_REQUEST_HEADERS'])) {
header("Access-Control-Allow-Headers: {$_SERVER['HTTP_ACCESS_CONTROL_REQUEST_HEADERS']}");
}

exit(0);
}
}

/**
* Checks if root relative url starts with api/v1
* @return bool
Expand Down

0 comments on commit 565aee4

Please sign in to comment.