php设置跨域问题

php设置跨域问题

这段世界使用php写了一些接口来提供给Vue.js 项目学习开发使用,写好的接口只想自己指定的域名下能够访问、所以需要怎么去做呢?

为什么会跨域、造成跨域的原因是什么

浏览器的同源策略是浏览器为安全性考虑实施的非常重要的安全策略,从一个域上加载的脚本就不能去访问另外一个域下的文档,所以就会出现下面提示不能跨域问题

XMLHttpRequest cannot load https://api.it919.cn/public/index.php/api/News/new_detail?postid=CM5VQ6UE0001899N. The 'Access-Control-Allow-Origin' header has a value 'https://code.it919.cn' that is not equal to the supplied origin. Origin 'http://192.168.1.2:800' is therefore not allowed access.

1、允许单个域名访问,也就是指定某个域名能跨域请求php接口

header('content-type:application:json;charset=utf8');  
header('Access-Control-Allow-Origin:https://code.it919.cn');
header('Access-Control-Allow-Methods:*');  
header('Access-Control-Allow-Headers:x-requested-with,content-type'); 

主要设置的还是
header('Access-Control-Allow-Origin:https://code.it919.cn');将其设置为自己跨域的域名,如果允许全部访问的话 设置 *

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

ok这样就能够 访问接口数据不跨域了

2、允许多个域名能够跨域访问接口数据
指定多个域名(https://code.it919.cnhttp://www.it919.cn)跨域访问,这样的话就配置一个数组包含允许跨域的域名载这里面

$allow_origin = array(  
    'https://code.it919.cn',
    'http://www.it919.cn'  
);  

获取需要访问接口数据的域名

$origin = isset($_SERVER['HTTP_ORIGIN'])? $_SERVER['HTTP_ORIGIN'] : '';  

判断该域名是否是在我们定义好的数组里面

if(in_array($origin, $allow_origin)){  
    header('Access-Control-Allow-Origin:'.$origin);       
} 
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,385评论 19 139
  • error code(错误代码)=0是操作成功完成。error code(错误代码)=1是功能错误。error c...
    Heikki_阅读 8,722评论 1 9
  • 1. 什么是跨域? 跨域一词从字面意思看,就是跨域名嘛,但实际上跨域的范围绝对不止那么狭隘。具体概念如下:只要协议...
    他在发呆阅读 4,204评论 0 0
  • 2017-04-20 陈木鱼 陪你在葱葱岁月 “什么叫说课?”小欣问道。 “说课就是介绍这节课的重点,难点,讲课的...
    lovingyourself阅读 1,618评论 0 0
  • ――姚思远 (其一) 秋攒寒气人攒纪,去尽孤鸦走流霞。 来年霜消雷兴作,便把青枝扫落花。 ...
    姚思远阅读 2,972评论 0 0