美文网首页
ThinkPhP5 解决Vue跨域请求

ThinkPhP5 解决Vue跨域请求

作者: 叶情宇 | 来源:发表于2018-12-17 11:32 被阅读123次

在项目目录下面,创建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天半的时间终于把这个问题解决了,问题原因真的很简单,就是网站根目录的问题,具体我说下

我使用的mac开发,使用的MAMP开发环境,只要是MAMP默认的nginx配置文件有点问题 Snip20181218_2.png

相关文章

  • axios跨域和配置proxyTable

    使用vue-axios和vue-resource解决vue中调用网易云接口跨域的问题 vue.js学习之 跨域请求...

  • ajax 请求

    Vue开发中解决跨域问题 Axios 配置请求拦截

  • vue简单接口封装 跨域问题处理

    vue接口封装: 第一步:解决跨域 接口请求,一般都会碰到跨域问题,在vue项目中,我们采用页面代理的方法解决跨域...

  • ThinkPhP5 解决Vue跨域请求

    在项目目录下面,创建common/behavior/CronRun.php文件,文件内容如下: 接着在项目中(ta...

  • uni-app及vue浏览器跨域问题解决

    以猫眼电影接口为例: 假设请求接口 遇到跨域问题 vue解决跨域 在项目根目录下新建vue.config.js文件...

  • spring boot + VUE跨域处理

    在使用 vue 做前端开发时,碰到 vue 请求接口出现跨域问题。解决的方法,就在后台添加一个跨域请求的过滤器,来...

  • 跨域

    ??JSONP只能解决GET请求跨域,不能解决POST请求跨域问题,XHR2可以解决GET,POST方式的请求跨域...

  • vue发送请求(axios + vue-resource)

    axios本身并不支持发送跨域的请求,使用vue-resource发送跨域请求。 vue-resource基本使用...

  • 前端跨域请求实现(待整理)

    1.常用的vue的axios实现请求 2.传统项目使用jsonp解决跨域请求和接受问题

  • 解决一例Vue跨域访问无效

    在使用vue开发的时候经常要涉及到跨域的问题,其实在vue cli中是有我们设置跨域请求的文件的。当跨域无法请求的...

网友评论

      本文标题:ThinkPhP5 解决Vue跨域请求

      本文链接:https://www.haomeiwen.com/subject/npyqkqtx.html