javascript中的android chrome Cookie集在PHP$_Cookie中不可用
android chrome Cookie set in javascript not available in PHP $_COOKIE
我为公司的一个活动设置了一个在线注册表格。我使用我们银行收集信用卡信息的服务,因为我不想在试图保护所有这些信息时遇到麻烦。因此,我的表单收集了所有必要的数据,设置了一个cookie,然后转发到银行给我的php页面,银行会检查浏览器中设置的cookie,如果它在那里,就会返回实际的html,然后直接转发到信用卡数据输入页面。如果没有设置cookie,页面会显示一条消息,说明页面需要JavaScript,然后返回并打开它。(请注意,这不是我的代码,它来自银行)。下面是一些代码片段。我把饼干设置成这样:
document.cookie = "fam=barn; path=/pmtproc";
在一个名为setCookie()的javascript函数中,这是该函数中除了try/catch块之外的唯一一行代码。然后,在提交表单时转发到的页面(提交表单的"操作"中的url)中,cookie被检查如下:
if (isset($_COOKIE['name'])){
setcookie('name', '', time()-3600);
echo $x;
} else {
echo ("JavaScript is needed for this page. Please go "):
$url = htmlspecialchars($_SERVER['HTTP_REFERER']);
echo "<a href='$url'>back</a>"
echo ", turn on JavaScript and try again - thanks!":
}
($x包含页面的html,当"设置了Javascript"时,它会转发到银行的信用卡数据输入网站。最有趣的是,注册表格到处都使用Javascript,所以如果没有启用Javascript,他们甚至无法进入检查cookie的页面)。
setCookie()函数是提交按钮(processForPmt())调用的函数在返回true之前所做的最后一件事。在此之前,processForPmt()会在页面上添加来自其他表单的元素,这些元素中包含单独的注册数据——页面一次接受多个注册。(所以基本上我会把各个表单上的元素复制到将要提交的表单中)。
现在,这个问题的奇怪之处在于,它在台式机浏览器(Mac上的FF 45和Chrome 49)上运行良好,但在我的Android手机(Chrome 49和Android 4.4.4)上则不然。我还没有在其他任何浏览器上测试过它。
我已经在手机上使用Chrome的远程调试工具进行了调试,setCookie没有发现任何异常或其他抱怨。它似乎将cookie设置得很好,但当它到达第二个php页面时,没有cookie。根本没有cookie。:-(
更奇怪的是,我在一个不同的注册表格中有完全相同的设置,现在正在运行,而且效果很好。我以完全相同的方式设置cookie,在javascript中使用相同的setCookie()函数(尽管是该文件的本地函数-我知道,我知道它应该在我包含的一个文件中,但我只是还没有时间这么做),然后转发到一个php文件,该文件使用完全相同的代码检查cookie(尽管在不同的文件中,所以我可以在不破坏当前注册的情况下测试新注册)。
我相信还有其他信息可以帮助解决这个问题,所以请让我知道你还需要知道什么来帮助我。
这可能是一件非常荒谬的事情(我已经检查了以确保cookie代码的设置是相同的-从工作文件复制/粘贴到不工作的文件中),我就是看不到…
第4-6-16版:我注册了browserstack.com,这样我就可以在其他设备/网站上测试它,这在带有KitKat(4.4.4)的Galaxy S4上运行得很好,这就是我的手机(虽然它是摩托罗拉Droid Mini,但我没有这个选项),还有一台运行棒棒糖(5)的Moto X第二代。可能只是我的手机。但任何想法都将不胜感激。
我注意到在一个带有https和SameSite="无";,饼干没有做好。当我添加";"安全";属性,它工作:
var is_ssl = window.location.protocol === "https:";
var ss = is_ssl ? ";SameSite=None" : ";SameSite=Lax";
var sec = is_ssl ? ";secure" : "";
document.cookie = name + " = " + value + ss + sec;
唯一的问题是,当您有一些带有HTTPS的页面,而有些没有HTTPS的页面时,并且您希望两者都能访问cookie。。那么也许你应该总是设置SameSite=lax而不带";"安全";属性(我尚未对此进行测试)。
警告:为了保护您的数据,请确保您了解SameSite的不同值。
- php httponly cookie在浏览器关闭时被删除
- 如何在提交表单时将PHP变量传递到Javascript cookie中
- 可以't使用ssl读取php中的cookie
- 无法读取 php 中 JavaScript 设置的 cookie
- 我可以't使用AngularJS读取用PHP创建的Cookie
- 通过JavaScript设置cookie与通过PHP设置cookie
- 是否将Javascript变量保存为PHP变量?获取、发布、COOKIE
- 如何删除cookie错误注意:PHP上的未定义索引
- javascript中的android chrome Cookie集在PHP$_Cookie中不可用
- 使用PHP和JSP在另一个网页中获取cookie值
- 如何将 JavaScript cookie 传递给 PHP cookie
- 使用 javascript 设置的 cookie,无法使用 PHP 识别(相同的域和路径)
- Cookie grabber in Php or javascript
- PHP Cookie 未设置/工作
- 使用 PHP 设置的 cookie 在 js 重定向和新的 PHP 脚本使用 isset 检查后不可用
- 删除cookie(PHP,JS)适用于Firefox,Safari,Opera,但不适用于Chrome
- 为Remember Me设置Cookie-PHP与Javascript
- 设置Cookie php/javascript子域
- 对于购物车,您将使用它来设置cookie (PHP或JavaScript)
- facebook从cookie php自动重新登录