本文作者:心月

php跨域问题解决方案

心月IT博客 2019-10-25
php跨域问题解决方案摘要:跨域,指的是从一个域名去请求另外一个域名的资源。即跨域名请求!跨域时,浏览器不能执行其他域名网站的脚本,是由浏览器的同源策略造成的,是浏览器施加的安全限制。

        跨域,指的是从一个域名去请求另外一个域名的资源。即跨域名请求!跨域时,浏览器不能执行其他域名网站的脚本,是由浏览器的同源策略造成的,是浏览器施加的安全限制。

        同源策略是由 Netscape 公司提出的一个著名的安全策略,所有支持 JavaScript 的浏览器都会使用这个策略。所谓同源是指,域名,协议,端口相同。当页面在执行一个脚本时会检查访问的资源是否同源,如果非同源,那么在请求数据时,浏览器会在控制台中报一个异常,提示拒绝访问。

        跨域的严格一点来说就是只要协议,域名,端口有任何一个的不同,就被当作是跨域。

        比如,在实际项目中由于前后端分离当前端需要通过接口向后台发起请求,此时就会出现跨域问题,那么,这类问题需要如何解决呢?

PHP解决跨域问题的方法

其实php解决跨域问题很简单,只需加上下面的代码就可以了:

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

        加上这行代码表示允许所有的域名访问,不过为了安全起见,在实际项目中往往会限定只允许固定的几个域名和方法发起的请求。


1、只允许单个域名跨域请求:

header('Access-Control-Allow-Origin:http://www.xxx.com');
header('Access-Control-Allow-Methods:POST');    //表示只允许POST请求
header('Access-Control-Allow-Headers:x-requested-with, content-type'); //请求头的限制


2、允许多个域名跨域请求:

$origin = isset($_SERVER['HTTP_ORIGIN'])? $_SERVER['HTTP_ORIGIN'] : '';  
$allow_origin = [  
    'http://www.xxx1.com',  
    'http://www.xxx2.com' ];  
if(in_array($origin, $allow_origin)){  
    header('Access-Control-Allow-Origin:'.$origin);       
}
header('Access-Control-Allow-Methods:POST'); //表示只允许POST请求
header('Access-Control-Allow-Headers:x-requested-with, content-type');


3、不限制域名

header('Access-Control-Allow-Origin:*');
header('Access-Control-Allow-Methods:POST');//表示只允许POST请求
header('Access-Control-Allow-Headers:x-requested-with, content-type');


文章版权及转载声明:

本文由 心月IT技术博客 博主整理于 2019-10-25
若转载请注明原文及出处:https://www.xinyueseo.com/other/434.html

分享到:
赞(
发表评论
快捷输入:

验证码

    评论列表 (有 0 条评论,人围观)参与讨论