关于使用JQ AJAX POST跨域请求数据的说明。

编辑:睿儿发表于:2021-01-24 16:40:50 24 次阅读

AJAX请求内容一般都是在同一域内,但有的时候调用接口内容时需要跨域调用,跨域调用想要成功需要在服务器端设置一下API的HEADER中的

 header('Access-Control-Allow-Origin:*');


增加这项之后,接口就可以被跨域调用了。。。这里的 * 表示所有域名都可以调用。

为了接口安全,一般要设置调用接口域名白名单。

header('Access-Control-Allow-Origin:http://www.zjkdh.com');

这样就设置好只允许  zjkdh.com 域名调用接口了。。

如果接口有多个域名可调用,目前好像没有办法直接写在header里面。我们可以设置判断域名白名单的方法。

$HTTP_ORIGIN = $_SERVER['HTTP_ORIGIN'];
//把获取来的域名和白名单数组判断,如果存在就执行下面一句。
header('Access-Control-Allow-Origin:'.$HTTP_ORIGIN);

如果你的AJAX里面还需要传输 header 数据的话 

AJAX里面这样写,增加headers选项:

headers:{
    'headerStr':'haogang824ABC',
    'token':'thisToken',
    'mystr':'mystr'
},


在后端PHP文件里面这样接收:

header("Access-Control-Allow-Headers:headerStr,token,mystr");

这样就可以接收前端传过来的数据。用$SERVER获取就好。

$_SERVER['HTTP_HEADERSTR']


附上一个JQ AJAX POST 代码:

$.ajax({
        type: 'POST',
        url: 'http://www.zjkdh.com/XXX.php',
        dataType : "text",
        data: {
            'account':'haogang',
                'password':'密码'
        },
        headers:{
            'headerStr':'headerStr',
             'token':'thisToken',
             'mystr':'mystr'
},
        success: function(a){
            console.log(a);
        }
});


原文地址:http://www.zjkdh.com/library/202101/64.html(张家口导航-睿儿知识库)

张家口睿儿网络科技有限公司版权所有