美文网首页
thinkphp处理前端跨域请求

thinkphp处理前端跨域请求

作者: jnxc1888 | 来源:发表于2018-07-04 09:45 被阅读179次

1、前端js正常ajax请求

<script>
    function testGet(){
        $.ajax({
            url: "http://xxxx.com/home/signin/getxxx?session_id=xxxx",
            type: "get",
            dataType: "json",
            success: function (data) {
                console.log(data);
            },
            error: function(data){
                console.log(data);
            }
        });
    }

    function testPost(){
        $.ajax({
            url: "http://xxx.com/home/signin/getxxx",
            type: "post",
            dataType: "json",
            data: {
                session_id: 'xxxxx'
            },
            success: function (data) {
                console.log(data);
            },
            error: function(data){
                console.log(data);
            }
        });
    }
</script>

后端php返回

jsonResponse($respone);

//jsonResponse方法:
//function jsonResponse($data)
//{
//    exit(json_encode($data, JSON_UNESCAPED_SLASHES));
//}

2、前端js用ajax跨域请求

<script>
    function testGet(){
        $.ajax({
            url: "http://xxxx.com/home/signin/getxxx?session_id=xxxx",
            type: "get",
            dataType: "jsonp",
            success: function (data) {
                console.log(data);
            },
            error: function(data){
                console.log(data);
            }
        });
    }

    function testPost(){
        $.ajax({
            url: "http://xxx.com/home/signin/getxxx",
            type: "post",
            dataType: "jsonp",
            data: {
                session_id: 'xxxxx'
            },
            success: function (data) {
                console.log(data);
            },
            error: function(data){
                console.log(data);
            }
        });
    }
</script>

thinkphp返回

$this->ajaxReturn($res,JSONP);

ajaxReturn方法:

/**
     * Ajax方式返回数据到客户端
     * @access protected
     * @param mixed $data 要返回的数据
     * @param String $type AJAX返回数据格式
     * @return void
     */
    protected function ajaxReturn($data,$type='') {
        if(empty($type)) $type  =   C('DEFAULT_AJAX_RETURN');
        switch (strtoupper($type)){
            case 'JSON' :
                // 返回JSON数据格式到客户端 包含状态信息
                header('Content-Type:application/json; charset=utf-8');
                exit(json_encode($data));
            case 'XML'  :
                // 返回xml格式数据
                header('Content-Type:text/xml; charset=utf-8');
                exit(xml_encode($data));
            case 'JSONP':
                // 返回JSON数据格式到客户端 包含状态信息
                header('Content-Type:application/json; charset=utf-8');
                $handler  =   isset($_GET[C('VAR_JSONP_HANDLER')]) ? $_GET[C('VAR_JSONP_HANDLER')] : C('DEFAULT_JSONP_HANDLER');
                exit($handler.'('.json_encode($data).');');  
            case 'EVAL' :
                // 返回可执行的js脚本
                header('Content-Type:text/html; charset=utf-8');
                exit($data);            
        }
    }

相关文章

  • thinkphp处理前端跨域请求

    1、前端js正常ajax请求 后端php返回 2、前端js用ajax跨域请求 thinkphp返回 ajaxRet...

  • 关于设置env等环境变量的思考

    1、如何处理跨域后台处理跨域前端处理跨域浏览器处理跨域 前端本地处理跨域:代理线上跨域的处理方式:Nginx反向代...

  • 实现跨域请求的八种方式

    前端开发中我们经常会遇到跨域请求的情况,处理跨域请求方式很多,特整理如下: 浏览器的同源策略 提到跨域不能不先说一...

  • 前端请求

    node 简单跨域 前端简单请求

  • fastadmin跨域处理 thinkphp5.0

    fastadmin跨域处理 thinkphp5.0

  • axios发送跨域请求需要注意的问题

    在实际项目中前端使用到vue,后端使用php进行开发。前端使用axios请求请求。 关于跨域 跨域的概念这些就不说...

  • vue+sprintboot 解决session为空问题

    前端处理: 在request.js中添加如下代码,允许跨域携带cookie 请求拦截添加token 后端处理: 添...

  • 跨域请求(CORS)要点

    前端开发的童鞋,应该都有听过跨域请求,但这其中的细节可能还不清楚,比如: 什么是跨域请求? 为什么会存在跨域请求?...

  • express 实现跨域

    在前端向后端发起请求时会出现跨域无法请求的问题,所谓跨域是指前端的资源请求与所请求的资源本身的服务器在不同域或不同...

  • django跨域配置

    前言——跨域请求 前端对Cross-Origin Resource Sharing 问题(CORS,中文又称'跨域...

网友评论

      本文标题:thinkphp处理前端跨域请求

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