专栏首页桑先生的专栏PHP实现跨域解决办法

PHP实现跨域解决办法

这两天,项目上遇到了如何解决跨域问题.对于跨域.百度了一下也是很快解决.出于对跨域的不了解,也是通过查资料了解了一下.现在做个总结.

首先,需要明白什么是跨域?

跨域

跨域是因为浏览器的同源策略引起的,说白了就是指从一个域的网页去请求另一个域的资源.比方说从你家去我家拿个东西.你肯定不让啊.那么什么是同源策略?

同源

URL由协议、域名、端口和路径组成,如果两个URL的协议、域名和端口相同,则表示他们同源。相反,只要协议,域名,端口有任何一个的不同,就被当作是跨域。

同源策略

同源策略(Same origin policy)是一种约定,它是浏览器最核心也最基本的安全功能,如果缺少了同源策略,则浏览器的正常功能可能都会受到影响。可以说Web是构建在同源策略基础之上的,浏览器只是针对同源策略的一种实现。(来自百度百科)

浏览器采用同源策略,禁止页面加载或执行与自身来源不同的域的任何脚本。

因为跨域.我们更加安全的上网. ? 但往往凡事有利有弊.所以,才有了本文.

本文通过设置Access-Control-Allow-Origin来实现跨域。

允许单个域名访问

指定某域名(http://shiniaan1997.cn)跨域访问,则只需在需要访问的文件头部添加如下代码:

header('Access-Control-Allow-Origin:http://shiniaan1997.cn');

允许多个域名访问

指定多个域名跨域访问,则只需在访问的文件头部添加如下代码:
$origin = isset($_SERVER['HTTP_ORIGIN'])? $_SERVER['HTTP_ORIGIN'] : '';  
  
$allow_origin = array(  
    'http://shiniaan1997.cn',
     http://test.shiniaan1997.cn  
);  
  
if(in_array($origin, $allow_origin)){  
    header('Access-Control-Allow-Origin:'.$origin);       
}

3、允许所有域名访问

允许所有域名访问则只需在访问的文件头部添加如下代码:

header('Access-Control-Allow-Origin:*');
// // 响应类型
header('Access-Control-Allow-Methods:*');
// 响应头设置
header('Access-Control-Allow-Headers:x-requested-with,content-type');

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Thinkphp5 分页传递参数

    最近几天项目中有涉及到搜索,起初数据量少的时候,在一页的情况下是可以完全展示完全的.随着数据量多的时候.点击下一页就会出现找不到数据的问题.

    桑先生
  • Fastadmin开发之插件开发

    fastadmin是一款优秀的后端框架,也是用这个框架写了好几个项目了.因为也是在做自家项目.所以就打算考虑已插件化开发形式去升级迭代版本.

    桑先生
  • fastadmin插件开发之插件目录

    上一篇文章写了点关于插件开发的东西,这一次打算就插件目录,以及各自的作用做一个补充说明.凡事几天不用,隔几天再看似乎倍感亲切.

    桑先生
  • 关于写论文说来简单但做起来难的三条建议

    A few years ago, we prepared a series of workshops on writing research papers an...

    WZEARW
  • R语言中回归和分类模型选择的性能指标

    有多种性能指标来描述机器学习模型的质量。但是,问题是,对于哪个问题正确的方法是什么?在这里,我讨论了选择回归模型和分类模型时最重要的性能指标。请注意,此处介绍的...

    拓端
  • 那些年我们一起学XSS - 15. Flash Xss进阶 [ExternalInterface.call第一个参数]

    Flash Xss进阶 [ExternalInterface.call第一个参数]

    漏洞知识库
  • 中奖名单

    感谢大家的支持,以下为活动留言点赞获奖名单,请在后台联系小编,留言你的企业微信号或微信号,以便奖品发放,谢谢大家的支持! No名单奖品1�� 默默向上游键盘...

    腾讯云TStack
  • Mybatis插件机制详解

    Mybatis采用责任链模式,通过动态代理组织多个插件(拦截器),通过这些插件可以改变Mybatis的默认行为(诸如SQL重写之类的),由于插件会深入到Myba...

    黄泽杰
  • 简单说说Python与Go的区别

    工作中的主力语言是Python,今年要搞性能测试的工具,由于GIL锁的原因,Python的性能实在是惨淡,需要学一门性能高的语言来生成性能测试的压力端。因此我把...

    py3study

扫码关注云+社区

领取腾讯云代金券