Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/41.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
通过从节点API调用PHP网站创建cookie_Php_Node.js_Cookies - Fatal编程技术网

通过从节点API调用PHP网站创建cookie

通过从节点API调用PHP网站创建cookie,php,node.js,cookies,Php,Node.js,Cookies,我们有我们目前的网站在PHP。我们目前正在节点中升级它。我们将一步一步地升级它,以便在PHP中有一些页面,在Node中有一些其他页面。 问题是,当用户连接时,我们必须确保他们在PHP和Node中都有一个会话,这样他们就不必连接两次 在PHP中,我们创建一个PHPSESSID cookie,并将所有数据存储在/tmp中的会话文件中。 在节点中,我们使用JWT令牌 我现在试图实现的是:当和用户连接一个在节点上运行的页面时,它必须创建一个PHPSESSID cookie和会话文件,所以当他导航到另一个

我们有我们目前的网站在PHP。我们目前正在节点中升级它。我们将一步一步地升级它,以便在PHP中有一些页面,在Node中有一些其他页面。 问题是,当用户连接时,我们必须确保他们在PHP和Node中都有一个会话,这样他们就不必连接两次

在PHP中,我们创建一个PHPSESSID cookie,并将所有数据存储在/tmp中的会话文件中。 在节点中,我们使用JWT令牌

我现在试图实现的是:当和用户连接一个在节点上运行的页面时,它必须创建一个PHPSESSID cookie和会话文件,所以当他导航到另一个在PHP上运行的页面时,他仍然会被连接

PHP网站和节点API具有相同的域,但运行在不同的端口上

现在我的代码所做的是:

我从节点API调用signIn函数 它创建JWT令牌,用户在节点中正确连接
我这样称呼PHP网站: 它正确地创建会话文件 它创建PHPSESSID cookie 但是当我检查我的域的cookies时,PHPSESSID没有出现。但在我用PHP创建并打印$uCookie之后,它就会这样做。 正因为如此,PHP找不到任何PHPSESSID cookie,也无法访问会话文件

我将Node与GraphQL和Apollo一起使用,PHP与Zend Framework 1.12一起使用

下面是我如何使用Node调用PHP:

const url = `http://www.mysite.local/ajax/login?email=${data.email}&password=${data.password}`
const headers = {
  Referer: 'http://www.mysite.local/auth'
}
await fetch(url, { method: 'GET', headers: headers })
PHP中的会话由Zend管理


我正在Firefox上进行测试。

HTTP cookies的工作原理如下:

客户端向服务器发送HTTP请求 服务器使用HTTP响应进行响应,该响应包括一个设置Cookie头 然后,客户机存储cookie 稍后,客户端向同一服务器发送另一个HTTP请求。因为它有一个存储的cookie,所以cookie包含在请求头中

浏览器通常会自动存储cookie。有一些边缘情况,比如Ajax请求,如果启用,则只处理跨源请求中的cookie

服务器端代码通常不会自动存储cookie。在处理服务器端代码时,通常需要显式地处理cookie,通常通过配置cookie jar库,例如

您正在从浏览器向Node.js发出HTTP请求。 Node.js正在向PHP发出HTTP请求。 我认为PHP正在用cookie进行响应 Node.js正在忽略cookie Node.js正在对浏览器进行HTTP响应 浏览器获取的HTTP响应中没有设置Cookie头。 Node.js在任何时候都不会从它向PHP发出的请求中读取cookie,也不会在它向浏览器发出的响应中复制cookie

这就是你需要做的


然后,您需要继续通过Node.js将请求代理到PHP,因为浏览器中存储的cookie将与Node.js服务器关联。

我这样称呼PHP网站-好吧。这就是JavaScript。是浏览器端JavaScript还是节点端JavaScript?正如@Quentin所指出的,了解运行所建议的JavaScript代码的运行时是非常有用的。无论如何,我会看一看。为了调试,至少在查看cookie是否正在从http请求中检索时,它可能会很有用。@Quentin它的节点端JavaScript@MomoKebab–如果您从Node发出请求,浏览器将不会存储cookie。@MomoKebab-原因与如果您请求您的好友Node.js将他们的手浸入您手上的油漆桶中相同不会变色。哇,谢谢,我不知道制作饼干的确切过程。我对我现在做的事情有了更好的理解。实际上,我目前正在阅读PHP的响应,发现由于@tin的链接,其中包含了cookie,我正在尝试设置收到的cookie。现在不行,但我想我必须把它寄给客户。