一、AJAX跨域问题 ————前端部分
1、普通AJAX跨域请求:
1》前端AJAX部分:
$.ajax({ type: 'POST', url: '请求地址', data: res, dataType:'json', success: function(data) { layer.msg(data.msg); }, error:function(e){ layer.msg('error'); } });
2》PHP部分:
如果是框架的话在入口文件加上以下代码就可以了,如果是单个的话同理也都加上以下代码!
header('Access-Control-Max-Age: 3600'); header('Access-Control-Allow-Origin: *'); header('Access-Control-Allow-Methods: GET, POST, PUT, DELETE'); header("Access-Control-Allow-Headers: X-Requested-With, Content-Type, Accept");
上面的*号是可以直接写网址的,也就是让那些外部域名有权限请求。
2、带Header头的AJAX跨域请求:
1》前端AJAX部分:
$.ajax({ type: 'POST', url: '请求地址', data: res, dataType:'json', beforeSend: function(request) { request.setRequestHeader("Apikey", ‘4rete564sfdsfsd5fsa’); }, success: function(data) { layer.msg(data.msg); }, error:function(e){ layer.msg('error'); } });
2》PHP部分:
如果是框架的话在入口文件加上以下代码就可以了,如果是单个的话同理也都加上以下代码!
# ---------------------------开始设置-------------------------- # 设置返回结果可以用于缓存的最长时间(可选的) header('Access-Control-Max-Age: 3600'); # 设置允许访问的域名:*代表允许所有 header('Access-Control-Allow-Origin: *'); # 设置允许访问的域名:http://www.youhutong.com # header('Access-Control-Allow-Origin: http://www.youhutong.com'); # 设置允许的提交方式:这里设置允许get、post、put、delete方式 header('Access-Control-Allow-Methods: GET, POST, PUT, DELETE'); # 设置heders允许附加带入的参数 header("Access-Control-Allow-Headers: X-Requested-With, Content-Type, Accept, Apikey"); # ---------------------------结束设置-------------------------- # ---------------------------设置多个域名-------------------------- # 设置允许跨域访问的域名(HTTP_ORIGIN字段只有跨域访问时才会有) $origin = isset($_SERVER['HTTP_ORIGIN']) ? $_SERVER['HTTP_ORIGIN'] : ''; # 设置允许多个域名访问 $allow_origin = [ 'http://www.youhutong.com', 'http://www.youhutong1.com' ]; if(in_array($origin, $allow_origin)){ header('Access-Control-Allow-Origin:'.$origin); header('Access-Control-Allow-Methods: GET, POST, PUT, DELETE'); header('Access-Control-Allow-Headers:x-requested-with,content-type, Accept, Apikey, Token'); } # -----------------------------------------------------------------
1、上面的*号是可以直接写网址的,也就是让那些外部域名有权限请求。
2、还有上面的APIKEY,是我们自己添加的哦。也就是你需要发送什么Header头,名字可以自己设定。
header("Access-Control-Allow-Headers: X-Requested-With, Content-Type, Accept, Apikey");
【下面是PHP接收数据,和注意事项:】
//比如我传了APIKEY这个头,那么接收方法如下: $apikey = empty($_SERVER['HTTP_APIKEY']) ? null : $_SERVER['HTTP_APIKEY']; //比如我传了name=小川,那么接收方法如下: $name = $_POST['name'];
【注意:】
值得提醒的是在接收Header头时,一定要按上面的写法,用empty判断一下。
不然就算你真传Header头数据了,在后台也打印出来了。也会报错。
比如换成:
//比如我传了APIKEY这个头,那么接收方法如下: $apikey = $_SERVER['HTTP_APIKEY'];
报错如下:
TP5框架写的程序设置允许跨域访问,在入口文件处设置。还需要接收从header头传apikey.
转载请注明来源地址:小川编程 » https://www.youhutong.com/index.php/article/index/136.html
1、本站发布的内容仅限用于学习和研究目的.请勿用于商业或非法用途,下载后请24小时内删除。
2、本站所有内容均不能保证其完整性,不能接受请勿购买或下载,如需完整程序,请去其官方购买正版使用
3、本站联系方式Email:admin@youhutong.com ,收到邮件会第一时间处理。
4、如侵犯到任何版权问题,请立即告知本站(立即在线告知),本站将及时删除并致以最深的歉意