前端代码
$.ajax({
type:'POST',
crossDomain:true,
headers:{
'token':tokendata
},
url:restUrl+"v1/xxx",
data:datadata,
success:function(result){
console.log(result);
},
error:function(xhr,status,error){
console.log(JSON.stringify(xhr));//解析xhr对象
}
});thinkPHP代码namespace app\api\behavior;
use think\Response;
class CORS
{
public function appInit(&$params)
{
//跨域访问的时候才会存在此字段
$origin = isset($_SERVER['HTTP_ORIGIN']) ? $_SERVER['HTTP_ORIGIN'] : '';
dump($origin);
$allow_origin = config('corsConfig')['allow_origin'];
//dump($allow_origin);
//dump(in_array($origin, $allow_origin));
if(in_array($origin, $allow_origin)){
//dump($origin);
header('Access-Control-Allow-Origin:'.$origin);
// header('Access-Control-Allow-Origin:*');
header('Access-Control-Allow-Methods:OPTIONS,POST,GET');
header('Access-Control-Allow-Headers:Authorization,token,Origin,X-Requested-With,Content-Type,Accept');
}
if(request()->isOptions()){
exit();
}
}
}下面是tags.php的代码return [
// 应用初始化
'app_init' => [
'app\\api\\behavior\\CORS'
],
// 应用开始
'app_begin' => [],
// 模块初始化
'module_init' => [],
// 操作开始执行
'action_begin' => [],
// 视图内容过滤
'view_filter' => [],
// 日志写入
'log_write' => [],
// 应用结束
'app_end' => [],
];问题1.去除ajax请求中的headers,请求一切正常
2.如上,ajax请求中带有headers的时候,报错如下图
corsbug.png
( 47.9 KB 下载:22 次 )
最佳答案