我一直坚持用前端的AngularJS和后端的SlimPHP制作REST API。当我只使用$ http.get和$ http.post时,everuthing是可以的,但不适用于$ http.delete和$ http.put。 我设置了标题:
$app = new \Slim\App();
header('Access-Control-Allow-Origin: *');
header('Access-Control-Allow-Headers: Content-Type');
header('Access-Control-Allow-Methods: GET, PUT, POST, DELETE, OPTIONS');
但这没有帮助,所以我发现有像CorsSlim这样的东西,但当我写这个:
require __DIR__ . '/vendor/autoload.php';
$app = new \Slim\App();
$app->add(new \CorsSlim\CorsSlim());
即使在通过作曲家安装slim和corsslim之后,我也立即得到了以下问题。
致命错误:第5行/wwwpath/vendor/palanik/corsslim/CorsSlim.php中找不到“Slim \ Middleware”类
在他们的CorsSlim GitHub上https://github.com/palanik/CorsSlim我发现他们将他们的苗条限制在版本<3.0,因此它与我的Slim不兼容。
所以,问题是:有没有办法用Angular和Slim v3制作带有get / post / put / delete请求的REST API,或者我必须将整个后端部分重新制作为v2才能使其工作? 提前谢谢。
答案 0 :(得分:4)
请务必使用CorsSlim
的{{3}}:
{
"require": {
"palanik/corsslim": "dev-slim3"
}
}
然后你可以简单地使用它:
<?php
require ('./vendor/autoload.php');
$app = new \Slim\Slim();
$app->add(new \CorsSlim\CorsSlim());
?>
答案 1 :(得分:0)
但不要忘记添加选项:
$corsOptions = array(
"origin" => "*",
"exposeHeaders" => array("Content-Type", "X-Requested-With", "X-authentication", "X-client"),
"allowMethods" => array('GET', 'POST', 'PUT', 'DELETE', 'OPTIONS')
);
$cors = new \CorsSlim\CorsSlim($corsOptions);
$app->add($cors);