为什么Chrome扩展程序在跨域请求中未设置PHP Cookie?

时间:2019-09-25 06:09:39

标签: javascript php cookies google-chrome-extension

我有一个Chrome扩展程序,该扩展程序使用XMLHttpRequest到我的主机服务器。当我在popup.js中使用XMLHttpRequest设置PHP cookie时,仅在下一个XMLHttpRequest中的popup.js中可见。但是,当扩展程序在某些Internet页上运行时,background.js再次向我的主机服务器发送XMLHttpRequest,但是cookie不可见。如何使PHP cookie对该服务器的所有请求可见?

设置cookie时使用PHP:

setcookie("name","john", time() + 3600*24*1000, "/");

2 个答案:

答案 0 :(得分:0)

背景,内容和弹出窗口是独立的,并且不共享状态(包括cookie)。但是您可以在它们之间进行交流https://developer.chrome.com/extensions/messaging

因此,如果您想在弹出窗口中初始化请求,那么如果要在其中使用cookie,则必须将cookie传递给背景。

答案 1 :(得分:0)

我设法解决了这个问题。 Cookie无法识别主机域。我再次按照PHP manual的说明进行操作,然后将cookie的设置方式更改为:

<input type="checkbox" name="checkboxes[]" value="1">
<input type="checkbox" name="checkboxes[]" value="2">
<input type="checkbox" name="checkboxes[]" value="3">
<input type="checkbox" name="checkboxes[]" value="4">
<input type="checkbox" name="checkboxes[]" value="5">
<input type="checkbox" name="checkboxes[]" value="6">

这一次我使用了变量$ cookie_name和$ cookie_value,但这对解决方案没有影响。