Firefox extension/addon 不存储 cookie
Firefox extension/addon does not store cookies
我正在开发一个浏览器扩展,它通过 XMLHttpRequests 向远程服务器进行身份验证。在 Firefox (59.0.2) 中,我遇到服务器发送的 session cookie 未存储在浏览器中的问题。查看网络流量时,我从服务器收到每个请求的 Set-Cookie 响应:
Set-Cookie JSESSIONID=node01abks2u96hf84wt0i1uqwsb9879.node0;Path=/
但似乎 cookie 从未被接受或存储在扩展程序中。
查看 Chrome(扩展程序在其中工作)时,我的扩展程序在请求中包含此 cookie:
Cookie: io=jCX1X9rlaOhCqE0nAAAB JSESSIONID=node01abks2u96hf84wt0i1uqwsb9879.node0
但是,在 Firefox 中并非如此。为什么 Firefox 不在请求中包含 cookie?为什么它不存储 cookie?
更新:按照建议,我提交了错误报告:
https://bugzilla.mozilla.org/show_bug.cgi?id=1454806
此外,我创建了一个非常小的示例插件,但失败了:
https://gitlab.com/czeidler/firefox-cookie-problem
有人可以让我知道该插件是否真的应该工作吗?还是我做错了什么?要触发问题,请打开插件的调试视图和 select 网络视图。然后单击插件弹出图标。这将触发对我的服务器的两个请求。第一个回复包含一个 Set-Cookie header,在第二个请求中没有被重用。
我找到了它不起作用的原因。 Firefox 将来自弹出窗口的请求作为跨域请求处理,因此不会设置 cookie。不确定 Chrome 和 Firefox 是否应该在此处表现相同或哪种方法更好。以下是我如何解决此问题以使其在两种浏览器中都能正常工作:
在服务器上:
response.addHeader("Access-Control-Allow-Origin", request.getHeader("Origin"))
response.addHeader("Access-Control-Allow-Credentials", "true")
在弹出窗口中:
connection.withCredentials = true;
我正在开发一个浏览器扩展,它通过 XMLHttpRequests 向远程服务器进行身份验证。在 Firefox (59.0.2) 中,我遇到服务器发送的 session cookie 未存储在浏览器中的问题。查看网络流量时,我从服务器收到每个请求的 Set-Cookie 响应:
Set-Cookie JSESSIONID=node01abks2u96hf84wt0i1uqwsb9879.node0;Path=/
但似乎 cookie 从未被接受或存储在扩展程序中。
查看 Chrome(扩展程序在其中工作)时,我的扩展程序在请求中包含此 cookie:
Cookie: io=jCX1X9rlaOhCqE0nAAAB JSESSIONID=node01abks2u96hf84wt0i1uqwsb9879.node0
但是,在 Firefox 中并非如此。为什么 Firefox 不在请求中包含 cookie?为什么它不存储 cookie?
更新:按照建议,我提交了错误报告: https://bugzilla.mozilla.org/show_bug.cgi?id=1454806
此外,我创建了一个非常小的示例插件,但失败了: https://gitlab.com/czeidler/firefox-cookie-problem 有人可以让我知道该插件是否真的应该工作吗?还是我做错了什么?要触发问题,请打开插件的调试视图和 select 网络视图。然后单击插件弹出图标。这将触发对我的服务器的两个请求。第一个回复包含一个 Set-Cookie header,在第二个请求中没有被重用。
我找到了它不起作用的原因。 Firefox 将来自弹出窗口的请求作为跨域请求处理,因此不会设置 cookie。不确定 Chrome 和 Firefox 是否应该在此处表现相同或哪种方法更好。以下是我如何解决此问题以使其在两种浏览器中都能正常工作:
在服务器上:
response.addHeader("Access-Control-Allow-Origin", request.getHeader("Origin"))
response.addHeader("Access-Control-Allow-Credentials", "true")
在弹出窗口中:
connection.withCredentials = true;