thinkphp解决跨域
时间: 2023-09-19 07:07:19 浏览: 200
ThinkPHP 5.x 版本可以通过设置响应头实现跨域。在控制器中可以使用以下代码:
```php
header('Access-Control-Allow-Origin: http://example.com');//指定允许其他域名访问
header('Access-Control-Allow-Methods: GET, POST, PUT');//响应类型
header('Access-Control-Allow-Headers: X-Requested-With, Content-Type');// 响应头设置
```
其中 `Access-Control-Allow-Origin` 指定允许跨域访问的域名,可以设置为 `*` 表示所有域名都允许跨域访问。`Access-Control-Allow-Methods` 指定允许的请求方法,`Access-Control-Allow-Headers` 指定允许的请求头。
另外,还可以通过在中间件中设置响应头实现跨域。首先创建中间件文件 `app\http\middleware\CrossDomain.php`,然后在文件中编写以下代码:
```php
namespace app\http\middleware;
class CrossDomain
{
public function handle($request, \Closure $next)
{
$response = $next($request);
$response->header('Access-Control-Allow-Origin', '*');
$response->header('Access-Control-Allow-Methods', 'GET, POST, PUT');
$response->header('Access-Control-Allow-Headers', 'X-Requested-With, Content-Type');
return $response;
}
}
```
在应用配置文件 `config\app.php` 中注册中间件:
```php
'middleware' => [
\app\http\middleware\CrossDomain::class,
],
```
这样就可以在应用的所有控制器中自动添加跨域响应头了。
阅读全文