跨域问题一直都很纠结的,最近做项目是真正遇到了。现代浏览器针对不同域名之间的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跨域方法相关推荐

  1. 前端跨域的理解和解决跨域的方案详解(全)

    作为前端开发,我们遇到最多的应该就是跨域问题,对于萌新来说,跨域就是一道墙,不知所措,其实只要理解了跨域的含义和原理,解决它是不难的,今天给大家介绍下什么是跨域和跨域的解决方案! 什么是跨域? 跨域是 ...

  2. 浏览器跨域服务器响应了吗,浏览器跨域问题之HTTP跨域响应头 | kTWO-个人博客

    摘要 本篇文章主要讲解HTTP中的几种响应头,解决web开发中常见的浏览器跨域问题CORS,主要包括了四个HTTP响应报文中的四个字段,同时讲解了如何携带cookie进行跨域. 0x01 浏览器跨域 ...

  3. cookie session token区别_彻底理解cookie,session,token

    点击上方"Java知音",选择"置顶公众号" 技术文章第一时间送达! 作者: 墨颜丶 cnblogs.com/moyand/p/9047978.html 发展史 ...

  4. PHP 跨域header处理

    跨域问题一直都很纠结的,最近做项目是真正遇到了.现代浏览器针对不同域名之间的ajax请求,一般情况下会阻止你获取到ajax返回内容(即使是1.a.com和2.a.com也算跨域),但是请求是真实发生的 ...

  5. ajxs跨域 php_php设置header头允许ajax跨域请求

    在做项目的时候,我们有时候希望能够可以跨域进行请求,但是ajax访问php接口的时候,通常会报一个错误: Failed to load 你的网址/test.php: No 'Access-Contro ...

  6. php跨域header处理

    php跨域header处理 通常跨域处理是在根目录的index.php 或者接口定义文件 header('Access-Control-Allow-Origin:*');//允许所有来源访问 head ...

  7. 解决使用elementUI框架el-upload跨域上传时session丢失问题

    解决使用elementUI框架el-upload跨域上传时session丢失问题 参考文章: (1)解决使用elementUI框架el-upload跨域上传时session丢失问题 (2)https: ...

  8. nginx添加允许跨域header头

    使用ngx_http_headers_module中的add_header 指令,在响应头中添加允许跨域. Syntax: add_header name value [always]; Defaul ...

  9. 跨域共享session (实现http跳转https 共享session)

    在网上找了很多,终于搞明白了,也行不是最好的办法,但确实非常使用的方法. 其中最重要的就是 设置session id 至 本地 cookies 当中, 采用如下方法: $currentSessionI ...

  10. 跨站访问如何保证session的正常使用

    1.最近公司开发了一个网站项目,一切顺利.由于网页没有兼容手机浏览器,后来添加了一个webapp端,独立于另一个站点,用于解决兼容手机浏览器的问题.其中webapp端的数据全部通过ajax进行请求另一 ...

最新文章

  1. PC上安装MAC X Lion
  2. 池化层对神经网络的运算速度有什么影响
  3. hdu 4495(hash+二分+dp)
  4. 第一讲,Python的安装(干货)
  5. Bash脚本教程之行操作
  6. java linearlayout_LinearLayout属性用法和源码分析
  7. c语言统计输入的字符数字的个数字,请问这个用c怎么做:输入一串字符,分别统计其中数字和字母的个数...
  8. TransE:Translating Embedding多元关系数据嵌入(知识图谱嵌入)2013 NIPS
  9. configparser模块简介
  10. 关于动态规格的新理解
  11. 一个员工经常找别人聊天,吾就知道他要走人了
  12. 毕业或者想转行做c++服务端开发的时候都很迷茫不知道从哪里开始学习?
  13. mac的鼠标滚动方向和触摸板方向,一个插件搞定
  14. 动漫学日语《白熊咖啡厅》(更新中)
  15. 大翻盘!超80亿美元Java侵权案落槌,谷歌胜诉!
  16. 八字算命网站源码技术细节解析:使用PHP和JAVA实现的MVC架构、MySQL数据库设计和功能模块介绍
  17. Microsoft XBOX 360 Project Natal 体感装置2010年6月15正式发布产品正式命名为“Kinect”
  18. 数据库服务器到底是用机械硬盘还是固态硬盘
  19. K9F1G08U0B K9F2G08U0A K9F2G08U0M
  20. 2023前端大厂面试题之JavaScript篇(4)

热门文章

  1. 关于ugui界面显示隐藏的优化
  2. 从其他项目中复制过来的mapper加载不进bean_手把手带你玩转k8s-一键部署springboot项目...
  3. vue el-checkbox循环多个如何选中当前的_vue 快速入门指南(一)
  4. JDK自带工具keytool的使用
  5. suspend java_Java线程stop和suspend的废弃
  6. hibernate java.util.date 精度_hibernate中java.util.Date类型映射
  7. SQL order by的用法
  8. C# KeyUp事件中MessageBox的回车(Enter)键问题
  9. 人工智能第四课:机器学习的数学基础
  10. 新系统基础优化--Centos6.6