当前位置:Gxlcms > PHP教程 > javascript-跨域请求的问题

javascript-跨域请求的问题

时间:2021-07-01 10:21:17 帮助过:5人阅读

我前端的代码是这样,
后台是用php写的,

200, 'returnDesc' => 'success'); // 返回的基础数据
    function __construct()
    {
        $this->return['serverTime'] =time();
        Log::record('传入的参数:' . var_export($_REQUEST, true),Log::DEBUG);
        $this->params = @json_decode(base64_decode(I('post.params'),true),true);
        if (!$this->params){
            $this->return['returnCode'] =100;
            $this->return['returnDesc'] = 'sign failed!';
            $this->responseJson();
        }else if(C('KEY')!=$this->params['key']){
            $this->return['returnCode'] =100;
            $this->return['returnDesc'] = 'sign failed!';
            $this->return['returnAlert'] = '密钥不正确!';
            $this->responseJson();
        }
    }

    /*
     * 检查接口传入的方式
     */
    public function checkPublicParams($interfaces) {
        $pass = false;
        $this->return['returnCode'] = 100;
        if (!I('post.')) {
            $this->return['returnDesc'] = '请求方式错误';
        } else if (!I('post.method') || !I('post.params')) {
            $this->return['returnDesc'] = '接口参数错误';
        } else if (!array_key_exists(I('post.method'), $interfaces)) {
            $this->return['returnDesc'] = '接口名错误';
        } else {
            $this->return['returnCode'] = 200;
            $pass = true;
        }
        return $pass;
    }
    protected function responseJson()
    {
        exit(json_encode($this->return));
    }
}

未改的状态是返回 认证失败
“{"returnCode":100,"returnDesc":"sign failed!","serverTime":1476799012}”
在网上也找到了修改的方法

但是不知如何修改

回复内容:

我前端的代码是这样,
后台是用php写的,

200, 'returnDesc' => 'success'); // 返回的基础数据
    function __construct()
    {
        $this->return['serverTime'] =time();
        Log::record('传入的参数:' . var_export($_REQUEST, true),Log::DEBUG);
        $this->params = @json_decode(base64_decode(I('post.params'),true),true);
        if (!$this->params){
            $this->return['returnCode'] =100;
            $this->return['returnDesc'] = 'sign failed!';
            $this->responseJson();
        }else if(C('KEY')!=$this->params['key']){
            $this->return['returnCode'] =100;
            $this->return['returnDesc'] = 'sign failed!';
            $this->return['returnAlert'] = '密钥不正确!';
            $this->responseJson();
        }
    }

    /*
     * 检查接口传入的方式
     */
    public function checkPublicParams($interfaces) {
        $pass = false;
        $this->return['returnCode'] = 100;
        if (!I('post.')) {
            $this->return['returnDesc'] = '请求方式错误';
        } else if (!I('post.method') || !I('post.params')) {
            $this->return['returnDesc'] = '接口参数错误';
        } else if (!array_key_exists(I('post.method'), $interfaces)) {
            $this->return['returnDesc'] = '接口名错误';
        } else {
            $this->return['returnCode'] = 200;
            $pass = true;
        }
        return $pass;
    }
    protected function responseJson()
    {
        exit(json_encode($this->return));
    }
}

未改的状态是返回 认证失败
“{"returnCode":100,"returnDesc":"sign failed!","serverTime":1476799012}”
在网上也找到了修改的方法

但是不知如何修改

对于 OPTIONS 请求,返回的 HTTP 响应应该包含以下信息:

1.允许跨域请求的方法

Access-Control-Allow-Methods: GET,POST

2.允许跨域请求的自定义头部

如 AJAX 请求

Access-Control-Allow-Headers: X-Requested-With

3.允许跨域请求的源

Access-Control-Allow-Origin: *

详细可以参考:

http://www.ruanyifeng.com/blo...

人气教程排行