PHP Slim - 请求的资源上没有Access-Control-Allow-Origin标头

问题描述 投票:0回答:1

我是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:*'标头,但来自/ items / {id}的标头没有,这会导致错误(CORS策略)。我该如何解决这个问题?

php cors slim same-origin-policy slim-3
1个回答
0
投票

我自己引起了这个问题,这不是一个苗条的问题。我用这段代码创建了一个临时错误处理程序方法:

$json = array("error" => [
    "message" => $message,
    "code"    => $code
]);

exit(json_encode($json));

只需设置标题即可解决问题:

header('Access-Control-Allow-Origin: *');
© www.soinside.com 2019 - 2024. All rights reserved.