小白的问题
starock opened this issue · 5 comments
首先感谢大神写的这个中间件!
说一下我的疑惑。我对PHP了解不多,只是刚开始用thinkPHP写写接口。现在遇到了跨域的麻烦,找了很多方法感觉还是不够好,所以想试试这个CORS中间件。
已经用composer在thinkPHP5工程下安装了medz/cors。
接下来我该怎么做?这段代码应该写在框架的哪个位置?完全不知道怎么下手啊,没有用过中间件,还请各位简单说明一下,谢谢!!
`use Medz\Cors\Cors;
$cors = new Cors($config); // The $config 👉 config/cors.php
file.
$cors->setRequest($requestType, $request); // The $request is empty array or is NULL
or $_REQUEST
$cors->setResponse($responseType, $response); // The $response is empty array.
$cors->handle();
$response = $cors->getResponse();`
刚去查了TP5中间件的用法,结果发现无法用命令行创建中间件。原来我用的是TP5.0.12版本低。刚下了个TP5.1。 我先试试~
你先忙,我把遇到的问题发上来,不用着急回复。先谢谢了~ :)
刚才已经学会用中间件了。然后我照猫画虎新建了一个名字叫CorsIt的中间件,代码如下。出现的问题写在注释里。
class CorsIt
{
public function handle($request, \Closure $next)
{
$config = [
'allow-credentials' => false, // set "Access-Control-Allow-Credentials" 👉 string "false" or "true".
'allow-headers' => ['*'], // ex: Content-Type, Accept, X-Requested-With
'expose-headers' => [],
'origins' => ['*'], // ex: http://localhost
'methods' => ['*'], // ex: GET, POST, PUT, PATCH, DELETE
'max-age' => 0,
];
//下面三个参数不知道填什么,瞎写的
$requestType = 'post';
$responseType = 'post';
$response = [];
$cors = new Cors($config); // The $config 👉 `config/cors.php` file.
$cors->setRequest($requestType, $request); // The $request is empty array or is `NULL` or $_REQUEST
$cors->setResponse($responseType, $response); // The $response is empty array.
$cors->handle();
$response = $cors->getResponse();
return $response;
//报错:中间件方法必须返回Response对象实例
}
}
@starock https://github.com/medz/cors/blob/master/docs/using-by-thinkphp.md#example 例子在这里了~ 注意一下,你安装的 CORS 版本,因为修复了一个错误的容器注册代码,否则安装后你的框架会一直报错!