PHP简单实现HTTP和HTTPS跨域共享session解决办法
PHP自带的SESSION会话机制是这样的:
PHP-FPM根据浏览器传来的一个名为PHPSESSID的HTTP cookie确定要访问的会话文件,然后填充超全局变量$_SESSION.
WebSocket建立连接时,也可以拿到这个HTTP cookie(注意跨域问题:AJAX跨域区分域名和端口,COOKIE区分域名但不区分端口),同理你可以根据这个PHPSESSID读取服务器上的会话文件,unserialize反序列化就能拿到会话数组,如果你要写入会话,记得先用 flock($fp, LOCK_EX) 排它锁锁定后再写入,只是读的话就不需要了.
但个人不建议使用PHP自带的SESSION会话机制,除非你的应用定位就是单台服务器.否则还是建议使用cookie验证身份(解密cookie,根据id比对salt),Redis存储用户数据:
user:10001:name => 'tux'
user:10001:age => 27
这样不同语言都可以访问到这些数据,而且可以把程序部署到其他服务器也没有问题.
什么是Ajax的交互模型?同步和异步的区别
AJAX = 异步 JavaScript 和 XML。 AJAX 是一种用于创建快速动态网页的技术。 通过在后台与服务器进行少量数据交换,AJAX 可以使网页实现异步更新。这意味着可以在不重新加载整个网页的情况下,对网页的某部分进行更新。 传统的网页(不使用 AJAX)如果需要更新内容,必需重载整个网页面。 同步:脚本会停留并等待服务器发送回复然后再继续 异步:脚本允许页面继续其进程并处理可能的回复 ps(交互模型就是Ajax在Browser端引入一个执行引擎,它一边应付user的请求,一边把某些必须交给服务器处理的东西背地里传送给服务器,同时背地里把结果准备好(接受服务器端的数据),展现给客户的技术模式。Ajax增强了用户的操作性。 而同步就是整个页面都刷新,异步就是只刷新用了Ajax技术的部分) 跨域问题简单的理解就是因为JS同源策略的限制,a.com域名下的JS无法操作b.com或c.a.com下的对象 http://blog.sina.com.cn/s/blog_49fa034d0101gg49.html
跨域是指什么
跨域是指在网页应用中,当一个请求页面的域名、协议、端口与该页面所在的域名、协议、端口不一致时,就会产生跨域。
简单来说,如果一个网站中的页面需要获取另一个网站的数据,或需要调用另一个网站的接口,但这两个网站的域名不同,则会产生跨域问题。
这种限制是由浏览器实现的,主要是为了保证用户的隐私和安全。为了解决跨域问题,一般采用JSONP、CORS、postMessage等方式进行处理。跨域问题是前端开发中常见的一个问题,有效的跨域处理方式是提高开发效率和应用系统的性能关键。
跨域是指在网络数据传输过程中,由于安全策略的限制,不同域名、不同端口、不同协议之间的数据交互受到限制的现象。
例如,一个网站的JavaScript脚本想要访问另一个域名的数据(如Ajax请求),就会被浏览器拦截,因为这属于跨域行为。为了保障用户数据的安全性,浏览器默认情况下是不允许跨域数据流动的。如果需要跨域操作,需要通过一些安全措施如JSONP、CORS等方式实现数据传输。因此,跨域是一个常见的网络安全问题,前端开发者必须了解和掌握跨域解决方法。
还没有评论,来说两句吧...