写一个前后端分离的项目 解决thinkphp6跨域问题
在这里可以使用tp6的前置中间件
第一开启中间件的文件配置

然后创建一个中间件文件

最后配置
<?php
/**
* Created by PhpStorm.
* User: Administrator
* Date: 2021/4/9
* Time: 17:51
*/
declare (strict_types = 1);
namespace appmiddleware;
use Closure;
use thinkConfig;
use thinkRequest;
use thinkResponse;
class AllowCrossDomain
{
protected $cookieDomain;
// header头配置
protected $header = [
Access-Control-Allow-Credentials => true ,
Access-Control-Max-Age => 1800,
Access-Control-Allow-Methods => GET, POST, PATCH, PUT, DELETE, OPTIONS ,
Access-Control-Allow-Headers => Authorization, Content-Type, If-Match, If-Modified-Since, If-None-Match, If-Unmodified-Since, X-CSRF-TOKEN, X-Requested-With,token ,
];
/**
* AllowCrossDomain constructor.
* @param Config $config
*/
public function __construct(Config $config)
{
$this->cookieDomain = $config->get( cookie.domain , );
}
/**
* 允许跨域请求
* @access public
* @param Request $request
* @param Closure $next
* @param array $header
* @return Response
*/
public function handle($request, Closure $next, ?array $header = [])
{
$header = !empty($header) ? array_merge($this->header, $header) : $this->header;
if (!isset($header[ Access-Control-Allow-Origin ])) {
$origin = $request->header( origin );
if ($origin && ( == $this->cookieDomain || strpos($origin, $this->cookieDomain))) {
$header[ Access-Control-Allow-Origin ] = $origin;
} else {
$header[ Access-Control-Allow-Origin ] = * ;
}
}
return $next($request)->header($header);
}
}
© 版权声明
文章版权归作者所有,未经允许请勿转载。如内容涉嫌侵权,请在本页底部进入<联系我们>进行举报投诉!
THE END













- 最新
- 最热
只看作者