PHP Slim - 请求的资源上不存在 Access-Control-Allow-Origin header
PHP Slim - No Access-Control-Allow-Origin header is present on the requested resource
我是 Slim 框架的新手。我正在构建 REST API,但在实施 CORS 时遇到问题。
首先我从
Slim cookbook:
然后我用了/tuupola/cors-middleware :
我想到了这个:
$app->options('/{routes:.+}', function ($request, $response, $args) {
return $response;
});
$app->add(new Tuupola\Middleware\CorsMiddleware([
"origin" => ["*"],
"methods" => ["GET", "POST", "PUT", "PATCH", "DELETE"],
"headers.allow" => [],
"headers.expose" => [],
"credentials" => false,
"cache" => 0,
]));
问题在于具有占位符参数的路由。例如:
$app->get('/items', 'ItemsController:index');
$app->get('/items/{id}', 'ItemsController:getItem');
来自 /items 的响应有一个 'Access-Control-Allow-Origin: *' header,但是来自 /items/{id} 不会,这会导致错误(CORS 策略)。
我该如何解决这个问题?
问题是我自己造成的,不是Slim的问题。
我使用以下代码创建了一个临时错误处理程序方法:
$json = array("error" => [
"message" => $message,
"code" => $code
]);
exit(json_encode($json));
只需设置一个 header 即可解决问题:
header('Access-Control-Allow-Origin: *');
我是 Slim 框架的新手。我正在构建 REST API,但在实施 CORS 时遇到问题。
首先我从 Slim cookbook:
然后我用了/tuupola/cors-middleware :
我想到了这个:
$app->options('/{routes:.+}', function ($request, $response, $args) {
return $response;
});
$app->add(new Tuupola\Middleware\CorsMiddleware([
"origin" => ["*"],
"methods" => ["GET", "POST", "PUT", "PATCH", "DELETE"],
"headers.allow" => [],
"headers.expose" => [],
"credentials" => false,
"cache" => 0,
]));
问题在于具有占位符参数的路由。例如:
$app->get('/items', 'ItemsController:index');
$app->get('/items/{id}', 'ItemsController:getItem');
来自 /items 的响应有一个 'Access-Control-Allow-Origin: *' header,但是来自 /items/{id} 不会,这会导致错误(CORS 策略)。 我该如何解决这个问题?
问题是我自己造成的,不是Slim的问题。 我使用以下代码创建了一个临时错误处理程序方法:
$json = array("error" => [
"message" => $message,
"code" => $code
]);
exit(json_encode($json));
只需设置一个 header 即可解决问题:
header('Access-Control-Allow-Origin: *');