php header带session,PHP接口跨域header头以及Session跨域方法
跨域问题一直都很纠结的,最近做项目是真正遇到了。现代浏览器针对不同域名之间的ajax请求,一般情况下会阻止你获取到ajax返回内容(即使是1.a.com和2.a.com也算跨域),但是请求是真实发生的。下面来讲一下,怎么在PHP后端让浏览器支持跨域请求。
// 允许所有跨域请求
header('Access-Control-Allow-Origin: *');
// 只允许http://www.baidu.com下发来的跨域请求
header('Access-Control-Allow-Origin: http://www.baidu.com');
但是我们在开发接口时,可能会提供给很多个客户网站使用。如果单纯使用*或者具体域名就不太科学了,这时候我们需要进行动态的判断处理。
// 定义一个允许跨域请求接口的域名列表,这里你可以用配置也可以用其它形式,我这里只是用$GLOBALS简单演示一下
$GLOBALS['API_ALLOW_ORIGINS'] = array(
'baidu.com',
'yurunsoft.com'
);
// 判断是否有origin请求头
if(isset($_SERVER['HTTP_ORIGIN']))
{
// 遍历域名列表判断
foreach($GLOBALS['API_ALLOW_ORIGINS'] as $domain)
{
if($_SERVER['HTTP_ORIGIN'] === $domain || substr($_SERVER['HTTP_ORIGIN'], -strlen($domain) - 1) === '.' . $domain)
{
header('Access-Control-Allow-Origin: ' . $_SERVER['HTTP_ORIGIN']);
break;
}
}
}
接下来要解决Session跨域问题,如何让1.a.com和2.a.com的session互通呢?
ini_set('session.cookie_domain', '.a.com');
然后在header('Access-Control-Allow-Origin: ' . $_SERVER['HTTP_ORIGIN']);下面加上
header('Access-Control-Allow-Credentials: true');
php header带session,PHP接口跨域header头以及Session跨域方法相关推荐
- 前端跨域的理解和解决跨域的方案详解(全)
作为前端开发,我们遇到最多的应该就是跨域问题,对于萌新来说,跨域就是一道墙,不知所措,其实只要理解了跨域的含义和原理,解决它是不难的,今天给大家介绍下什么是跨域和跨域的解决方案! 什么是跨域? 跨域是 ...
- 浏览器跨域服务器响应了吗,浏览器跨域问题之HTTP跨域响应头 | kTWO-个人博客
摘要 本篇文章主要讲解HTTP中的几种响应头,解决web开发中常见的浏览器跨域问题CORS,主要包括了四个HTTP响应报文中的四个字段,同时讲解了如何携带cookie进行跨域. 0x01 浏览器跨域 ...
- cookie session token区别_彻底理解cookie,session,token
点击上方"Java知音",选择"置顶公众号" 技术文章第一时间送达! 作者: 墨颜丶 cnblogs.com/moyand/p/9047978.html 发展史 ...
- PHP 跨域header处理
跨域问题一直都很纠结的,最近做项目是真正遇到了.现代浏览器针对不同域名之间的ajax请求,一般情况下会阻止你获取到ajax返回内容(即使是1.a.com和2.a.com也算跨域),但是请求是真实发生的 ...
- ajxs跨域 php_php设置header头允许ajax跨域请求
在做项目的时候,我们有时候希望能够可以跨域进行请求,但是ajax访问php接口的时候,通常会报一个错误: Failed to load 你的网址/test.php: No 'Access-Contro ...
- php跨域header处理
php跨域header处理 通常跨域处理是在根目录的index.php 或者接口定义文件 header('Access-Control-Allow-Origin:*');//允许所有来源访问 head ...
- 解决使用elementUI框架el-upload跨域上传时session丢失问题
解决使用elementUI框架el-upload跨域上传时session丢失问题 参考文章: (1)解决使用elementUI框架el-upload跨域上传时session丢失问题 (2)https: ...
- nginx添加允许跨域header头
使用ngx_http_headers_module中的add_header 指令,在响应头中添加允许跨域. Syntax: add_header name value [always]; Defaul ...
- 跨域共享session (实现http跳转https 共享session)
在网上找了很多,终于搞明白了,也行不是最好的办法,但确实非常使用的方法. 其中最重要的就是 设置session id 至 本地 cookies 当中, 采用如下方法: $currentSessionI ...
- 跨站访问如何保证session的正常使用
1.最近公司开发了一个网站项目,一切顺利.由于网页没有兼容手机浏览器,后来添加了一个webapp端,独立于另一个站点,用于解决兼容手机浏览器的问题.其中webapp端的数据全部通过ajax进行请求另一 ...
最新文章
- PC上安装MAC X Lion
- 池化层对神经网络的运算速度有什么影响
- hdu 4495(hash+二分+dp)
- 第一讲,Python的安装(干货)
- Bash脚本教程之行操作
- java linearlayout_LinearLayout属性用法和源码分析
- c语言统计输入的字符数字的个数字,请问这个用c怎么做:输入一串字符,分别统计其中数字和字母的个数...
- TransE:Translating Embedding多元关系数据嵌入(知识图谱嵌入)2013 NIPS
- configparser模块简介
- 关于动态规格的新理解
- 一个员工经常找别人聊天,吾就知道他要走人了
- 毕业或者想转行做c++服务端开发的时候都很迷茫不知道从哪里开始学习?
- mac的鼠标滚动方向和触摸板方向,一个插件搞定
- 动漫学日语《白熊咖啡厅》(更新中)
- 大翻盘!超80亿美元Java侵权案落槌,谷歌胜诉!
- 八字算命网站源码技术细节解析:使用PHP和JAVA实现的MVC架构、MySQL数据库设计和功能模块介绍
- Microsoft XBOX 360 Project Natal 体感装置2010年6月15正式发布产品正式命名为“Kinect”
- 数据库服务器到底是用机械硬盘还是固态硬盘
- K9F1G08U0B K9F2G08U0A K9F2G08U0M
- 2023前端大厂面试题之JavaScript篇(4)
热门文章
- 关于ugui界面显示隐藏的优化
- 从其他项目中复制过来的mapper加载不进bean_手把手带你玩转k8s-一键部署springboot项目...
- vue el-checkbox循环多个如何选中当前的_vue 快速入门指南(一)
- JDK自带工具keytool的使用
- suspend java_Java线程stop和suspend的废弃
- hibernate java.util.date 精度_hibernate中java.util.Date类型映射
- SQL order by的用法
- C# KeyUp事件中MessageBox的回车(Enter)键问题
- 人工智能第四课:机器学习的数学基础
- 新系统基础优化--Centos6.6