thinkphp6跨域请求
时间: 2023-09-29 07:06:06 浏览: 202
在ThinkPHP 6中处理跨域请求,可以通过在中间件中添加相应的处理逻辑来实现。以下是一种常见的处理方法:
1. 首先,在应用目录下创建一个中间件文件,比如 `app\middleware\Cors.php`,内容如下:
```php
<?php
namespace app\middleware;
class Cors
{
public function handle($request, \Closure $next)
{
// 允许的域名列表,根据实际情况进行配置
$allowedOrigins = [
'http://example.com',
'https://example.com',
];
// 获取当前请求的域名
$origin = $request->header('origin');
// 判断当前请求的域名是否在允许的列表中
if (in_array($origin, $allowedOrigins)) {
// 设置允许跨域的域名
header('Access-Control-Allow-Origin: ' . $origin);
header('Access-Control-Allow-Headers: Origin, Content-Type, Authorization');
header('Access-Control-Allow-Methods: GET, POST, PUT, DELETE');
}
return $next($request);
}
}
```
2. 在应用配置文件 `config\middleware.php` 中注册该中间件:
```php
return [
// 其他中间件...
app\middleware\Cors::class,
];
```
3. 接下来,你可以将 `Cors` 中间件添加到需要处理跨域请求的路由或控制器方法上。例如,可在路由定义中添加中间件:
```php
use think\facade\Route;
Route::get('api/user', 'User/index')->middleware('Cors');
```
这样,当客户端发起跨域请求时,服务器会返回允许跨域的响应头,从而实现跨域请求。
阅读全文