php - https、Jquery、PHP、Curl 和 document.cookie

标签 php javascript jquery curl https

首先我要做的是: 我正在尝试访问登录页面以便我可以登录。该站点是 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/

相关文章:

php - 有没有办法重置特定类的所有静态属性?

php - 减少过期标题 SEO

php - 告诉 Composer 使用哪个 PHP 版本

javascript - 如何使用 Discord.js 检查消息作者是否具有管理员角色?

javascript - 从 xml 响应中获取一些数据来自 ajax jquery 调用

php - Swift-Mailer 错误, "Address in mailbox given [] does not comply with RFC"

javascript - 在 ReactJs 中使用 GoJs

javascript - 如何通过单击另一个元素来切换元素,并在单击另一个元素时重新切换它?

带有子类的 jQuery sibling ?

javascript - 重写一个立即调用的函数