跨站访问如何保证session的正常使用
1、最近公司开发了一个网站项目,一切顺利。由于网页没有兼容手机浏览器,后来添加了一个webapp端,独立于另一个站点,用于解决兼容手机浏览器的问题。其中webapp端的数据全部通过ajax进行请求另一个站点的数据。由于原站点是使用session机制,所以当webapp端在跨站调用数据时,存在着跨站访问原session不能使用问题,即第一次访问得到的sessionID在第二次访问时不能再次带上,导致每次访问数据前都要重新登录。
2、问题背景交代清楚后,我们来针对问题的解决。
(1)、服务器端:在返回给前端请求结果前加上以下代码
function return($data){
$u = $_SERVER['HTTP_REFERER'];
preg_match("/^(\w+:\/\/)?([^\/]+)/i", $u , $matches);
header('Access-Control-Allow-Origin:'.$matches[0]); //允许跨站访问的站点域名
header("Access-Control-Allow-Credentials:true"); //跨域请求头设置
return $data;
}
(2)、前端进行ajax请求时,要加入如下代码
function $POST (url, data, callback) {
loadingBox.create()
$.ajax({
url:(UrlPost+url),
type: 'post',
data: data,
xhrFields: {
withCredentials: true
},//添加跨域名请求参数
crossDomain: true,//添加跨域名请求参数
success:function(data){
...
},
error: function (err) {
...
}
})
}
跨站访问如何保证session的正常使用的更多相关文章
- nginx实战(三)之静态资源web服务(跨站访问)
语法 虽然说浏览器禁止跨站访问以防(CSRF),但出于一些原因还是要进行跨站访问,服务端通过设置头信息Access-Control-Allow-Orign:xxxx,客户端收到后就会允许跨站访问了 实 ...
- Nginx详解十二:Nginx场景实践篇之跨站访问相关
跨站访问 浏览器请求一个页面的时候,发送了两个域名的请求 此情况不安全,容易出现CSRF攻击,所以浏览器禁止跨域访问 Nginx设置打开跨站访问 配置语法:add_header name value ...
- 添加Access-Control-Allow-Origin主机头, 授权资源跨站访问
时间 2014-09-24 22:02:48 All by Neil 原文 https://blog.byneil.com/添加access-control-allow-origin主机头-授权资 ...
- Nginx作为静态资源web服务-跨站访问
一.跨域访问 1.什么是跨域? 参看我的另一篇博客(https://www.cnblogs.com/chrdai/p/11280895.html) 2.为什么浏览器禁止跨域访问? 不安全,容易出现CS ...
- nginx跨站访问,防盗链
跨站访问 从网站A利用AJAX跨站访问网站B 浏览器会根据服务端返回的头部信息(Access-Control-Allow-Origin)判断是否允许跨域访问.如果服务端都允许跨站访问,浏览器段也就没必 ...
- JSONP跨站访问
js中几种实用的跨域方法原理详解 这里说的js跨域是指通过js在不同的域之间进行数据传输或通信,比如用ajax向一个不同的域请求数据,或者通过js获取页面中不同域的框架中(iframe)的数据.只要协 ...
- web跨域访问,session丢失的问题
web跨域访问,session丢失的问题25 http://www.iteye.com/problems/71265 http://www.iteye.com/topic/264079 具体情况如下: ...
- CSRF(跨站请求伪造攻击)漏洞详解
Cross-Site Request Forgery(CSRF),中文一般译作跨站点 请求伪造.经常入选owasp漏洞列表Top10,在当前web漏洞排行中,与XSS和SQL注入并列前三.与前两者相比 ...
- 跨域访问之CORS
CORS:定义 2014年1月16日,W3C的Web应用工作组(Web Applications Working Group)和Web应用安全工作组(Web AppSec)联合发布了跨源资源共享(Cr ...
随机推荐
- Android的Activity组件
本章主题是Activity组件:Activity是Android四大组价之一,其重要地位自然不用说.“Activity是应用程序中可见的交互组件的基类,大致上等同于传统桌面应用个程序开发中的窗体.”( ...
- 04-Python入门学习-流程控制
一.流程控制if 语法1: if 条件: code1 code2 code3 .... age=180 height=163 weight=75 sex='female' is_beautif ...
- Petrozavodsk Winter-2018. Carnegie Mellon U Contest
A. Mines 每个点能爆炸到的是个区间,线段树优化建图,并求出SCC进行缩点. 剔除所有不含任何$n$个点的SCC之后,最小代价为每个入度为$0$的SCC中最小点权之和,用set维护即可. 时间复 ...
- 如何使用JavaScript实现纯前端读取和导出excel文件
js-xlsx 介绍 由SheetJS出品的js-xlsx是一款非常方便的只需要纯JS即可读取和导出excel的工具库,功能强大,支持格式众多,支持xls.xlsx.ods(一种OpenOffice专 ...
- nexus的jar包上传与下载
1. hosted,宿主仓库,部署自己的jar到这个类型的仓库,包括releases和snapshot两部分,Releases公司内部发布版本仓库. Snapshots 公司内部测试版本仓库 2. p ...
- (72)Wangdao.com第十二天_JavaScript 错误处理机制
1. Error 实例对象 JavaScript 解析或运行时,一旦发生错误,引擎就会抛出一个错误对象. JavaScript 原生提供Error构造函数,所有抛出的错误都是这个构造函数的实例. va ...
- SQL - 2.基础语法
一.SQL分类: DDL—数据定义语言(CREATE,ALTER,DROP,DECLARE) DML—数据操纵语言(SELECT,DELETE,UPDATE,INSERT) DCL—数据控制语言(GR ...
- new image()
在js中 新建一个new image()对象,image.src图片地址,这个是io读取是异步的,解决方法 image.onload=function(){ }
- PHP函数ip2long转换IP时数值太大而产生负数
// 使用 sprintf 返回无符号十进制数 $long = sprintf("%u",ip2long($ip)); // 先转换为二进制然后在转换为十进制 $long = bi ...
- Ubuntu-1604-LTS在虚拟机设置分辨率
在虚拟机中安装ubuntu系统时,有时系统的界面并不同虚拟机展示的匹配,需要我们进行调整.不用那么多废话,直接看图: