我有一个PHP应用程序,它验证用户,执行MySQL查询并依赖于$_SESSION
cookie。
一切都工作正常,但我意识到我需要使用前端做更多,因此不得不使用Vue.js和websockets。
因此,我使用node.js作为主域localhost
(为了生产)
我在localhost:8080
上提供了PHP API,以便Vue.js可以与PHP Backend进行通信。
现在,这是我的问题
如何在Vue / Websocket中使用/存储$_SESSION ID
并将其与每次向PHP服务器发出的请求一起发送?
我对stackoverflow做了一些研究,发现session_id()
可以返回当前的Session ID,但我不知道如何将PHP与Vue集成。
注意:我正在使用Vue.js(Vue,路由器,Vuex)和socket.io与Node.js
由于PHP服务器和node.JS服务器在两个不同的端口上运行,因此它们在所有浏览器中被视为不同的来源。这意味着从localhost:8080
发送的cookie不会被发送到对localhost:80
的任何请求。解决这个问题的一种方法是删除会话cookie上的仅http标志,这样你就可以通过javascript手动发送cookie,但如果有人设法在你的网站上运行XSS攻击,这可能会导致非常糟糕。
其他方法是1)只使用前端的两个服务器中的一个,然后使用后端与另一个后端进行通信,这意味着你可以让php仅对节点应用程序可用或者2)重新设计PHP以便使用令牌。根据我的理解,您使用php作为API,并且大多数API旨在使用令牌而不是会话,因为您通常从其他域访问API。