我正在尝试实现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());
任何想法可能是什么问题?
答案 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;代码。所以我只需要优化规则。