Slim 3 Http Delete方法不起作用

时间:2017-06-21 08:45:48

标签: php slim-3

我正在尝试实现http DELETE。该应用程序是用PHP和slim3框架编写的。前端是角2。

如果模式如下:$slimApp->delete('/delete', ...)一切都很好。

一旦我引入了诸如$slimApp->delete('/delete/{id}', ...)这样的参数,我就会收到以下错误:

  

对预检请求的响应没有通过访问控制检查:否'访问控制 - 允许 - 来源'标头出现在请求的资源上。

我已经阅读了文档https://www.slimframework.com/docs/cookbook/enable-cors.html但是我无法让它发挥作用。

这是我的中间件:

<?php

class MyMiddleware {

    public function __invoke(Request $req, Response $res, $next) {
        $res->withHeader('Access-Control-Allow-Origin', 'http://localhost:8100')
            ->withHeader('Access-Control-Allow-Credentials', 'true')
            ->withHeader('Access-Control-Allow-Headers', 'X-Requested-With, Content-Type, Accept, Origin, Authorization')
            ->withHeader('Access-Control-Allow-Methods', 'GET, POST, PUT, DELETE, OPTIONS');

        return $next($req, $res);
    }

}

$app = new \Slim\App([
    "settings"  => [
        "determineRouteBeforeAppMiddleware" => true
    ]
]);

$app->add(new MyMiddleware());

任何想法可能是什么问题?

2 个答案:

答案 0 :(得分:1)

响应是不可变的,重新分配变量。

public function __invoke(Request $req, Response $res, $next) {
    $res = $res->withHeader('Access-Control-Allow-Origin', 'http://localhost:8100')
        ->withHeader('Access-Control-Allow-Credentials', 'true')
        ->withHeader('Access-Control-Allow-Headers', 'X-Requested-With, Content-Type, Accept, Origin, Authorization')
        ->withHeader('Access-Control-Allow-Methods', 'GET, POST, PUT, DELETE, OPTIONS');

    return $next($req, $res);
}

答案 1 :(得分:0)

确定解决了这个问题。 .htaccess只是没有让请求&#34;达到&#34;代码。所以我只需要优化规则。