首先我要做的是: 我正在尝试访问登录页面以便我可以登录。该站点是 Https 并且需要设置 cookie,因此我使用 jquery 运行 PHP + Curl 来为我获取该页面并存储 cookie。好吧,我已经能够获取 cookie,但我不断收到未设置 Cookie 的弹出窗口。所以我仔细查看了它,发现 javascript 进行了初步检查以查看 cookie 是否已启用:
function initLogin(){
// check if cookie is enabled so applications can run
if (document.cookie == "") {
alert("Cookies are disabled. Cannot access mid-tier with this setting.\nPlease configure your browser to accept cookies.");
return;
}
....Other Code...
}
我几乎浏览了这个论坛上的每一篇帖子,并尝试了一大堆不同的代码,但没有成功。那么问题是如何克服这一点呢?我的理解是:Jquery 调用代理/服务器上的 php 脚本并调用 curl 来获取网页。然后,Curl 将保存 cookie 以备后用,但您如何使用它们。我认为只需将它们设置在 cookie 文件中就足够了,但我想我错了。所以我厌倦了将它们设置为 CURLOPT_COOKIE 但我不知道这是否正确。
这是我正在运行的代码的副本:
function getpage(){
$fullurl = "https://url/arsys/shared/login.jsp?/arsys/home";
$ch = curl_init ();
curl_setopt($ch, CURLOPT_HEADER, 1);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_URL, $fullurl);
$output = curl_exec ($ch);
preg_match_all('|Set-Cookie: (.*);|U', $output, $results);
$newcookies = implode(';', $results[1]);
echo "<br>COOKIES:" . $newcookies;
curl_setopt ($ch, CURLOPT_COOKIE, $newcookies);
echo curl_error($ch) . " " . $output;
curl_close($ch);
}
以上代码的输出: Cookies:JSESSIONID=B4830242479D3DFD3235D17EE6A4DEB8;q=""HTTP/1.1 200 OK Cache-Control: no-cache Content-Type: text/html;charset=UTF-8 Server: Microsoft-IIS/7.5 Set-Cookie: JSESSIONID=B4830242479D3DFD3235D17 EE6A4DEB8;路径=/arsys;安全设置 Cookie:q="";过期=星期四,1970 年 1 月 1 日 00:00:10 GMT;路径=/日期:2012 年 4 月 20 日星期五 17:57:17 GMT 内容长度:35657
我也试过:
function getpage(){
$ckfile = "cookies/cookie.txt";
$fullurl = "https://url/arsys/shared/login.jsp?/arsys/home";
$ch = curl_init ();
curl_setopt($ch, CURLOPT_COOKIEJAR, $ckfile);
curl_setopt ($ch, CURLOPT_COOKIEFILE, $ckfile);
curl_setopt($ch, CURLOPT_HEADER, 1);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_URL, $fullurl);
$output = curl_exec ($ch);
curl_close($ch);
}
cookie 保存在正确的文件中,但仍然收到相同的消息。
我在谷歌上尝试了代码,它工作正常,它阻止了我的 javascript..
最佳答案
在使用 PHP setcookie 从 curl 获取 cookie 后,您必须将 cookie 存储在浏览器 cookie 中(将其存储在单独的文件中)能够通过 JavaScript 使用它。
JavaScript 方面:使用 PHP 设置 cookie 后最好使用 jQuery.cookies.js
$.cookies.get()
$.cookies.filter()
$.cookies.set()
$.cookies.del()
$.cookies.test()
$.cookies.setOptions()
关于php - https、Jquery、PHP、Curl 和 document.cookie,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10251791/