在项目目录下面,创建common/behavior/CronRun.php文件,文件内容如下:
Snip20181217_1.png
<?php
/**
* Created by PhpStorm.
* User: yeqingyu
* Date: 2018/12/17
* Time: 20:34
*/
namespace app\common\behavior;
use think\Exception;
use think\Response;
class CronRun
{
public function run(&$dispatch){
$host_name = isset($_SERVER['HTTP_ORIGIN']) ? $_SERVER['HTTP_ORIGIN'] : "*";
$headers = [
"Access-Control-Allow-Origin" => $host_name,
"Access-Control-Allow-Credentials" => 'true',
"Access-Control-Allow-Headers" => "X-Token,x-uid,x-token-check,x-requested-with,content-type,Host"
];
if($dispatch instanceof Response) {
$dispatch->header($headers);
} else if($_SERVER['REQUEST_METHOD'] === 'OPTIONS') {
$dispatch['type'] = 'response';
$response = new Response('', 200, $headers);
$dispatch['response'] = $response;
}
}
}
接着在项目中(tags.php)配置行为动作,如下:
<?php
// 应用行为扩展定义文件
return [
// 应用初始化
'app_init' => [],
// 应用开始
'app_begin' => [
'app\\common\\behavior\\CronRun'
],
// 模块初始化
'module_init' => [],
// 操作开始执行
'action_begin' => [],
// 视图内容过滤
'view_filter' => [],
// 日志写入
'log_write' => [],
// 应用结束
'app_end' => [
'app\\common\\behavior\\CronRun'
],
];
这时候你在将项目部署到外线阿里服务器,一切成功没有问题,但是我的本地开发环境还是有问题,还是提示跨域问题,因为我在header中需要带一个x-token参数.错误如下
959ED85B46F0D233FCC564FED57C6804.jpg
其实在上面的设置中我已经设置了X-Token
"Access-Control-Allow-Headers" => "X-Token,x-uid,x-token-check,x-requested-with,content-type,Host"
而且部署到外线没有问题,只是本地开发环境有问题,这个问题花了我1天半的时间终于把这个问题解决了,问题原因真的很简单,就是网站根目录的问题,具体我说下
Snip20181218_2.png










网友评论