[英]How can I read httponly and secure cookies in the browser with Javascript?
[英]Problems using ajax to access secure and httponly cookies from javascript
我的網站在cookie上沒有安全性,並且某些cookie是由javascript設置的。 出於安全原因,我必須添加安全和httponly標志,以便適應我的JavaScript。 我發現的唯一方法是使用Ajax。
我寫了一個由javascript通過ajax調用的php腳本來設置cookie。 據我所知,javascript是monotask,異步任務是在同步任務之后進行調度的。 因此,我不得不修改代碼以等待ajax返回,然后再調用下一頁。 例如(請參見下面的javascript),當操作為“ RELOAD”時,如果在頁面上找到表單標簽,則將其提交,否則,將進行簡單的重新加載。
javascript:
function setMultiCookie(prm, action) {
var xhr = new XMLHttpRequest();
xhr.onreadystatechange = function() {
if (xhr.readyState == 4 && xhr.status == 200) {
setMultiCookieRet(action);
}
};
xhr.open("POST", "setMultiCookies.php", true);
xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
xhr.send("prm="+encodeURIComponent(prm));
}
function setMultiCookieRet(action) {
switch(action) {
case 'RELOAD':
var form = document.getElementsByTagName('form');
if (form.length > 0)
form[0].submit();
else
location.reload(true);
break;
case 'NONE':
break;
default:
window.open(action,'_self');
}
}
php腳本setMultiCookies.php:
<?php
header("Content-Type: text/plain");
if ($_POST["prm"] == '')
exit;
$prm = explode('µ', $_POST["prm"]);
foreach ($prm as $parms) {
list($name, $value) = explode('§', $parms, 2);
if ($value == "-unSetCookie-")
setcookie($name, '', 1, "/", "", TRUE, TRUE);
else
setcookie($name, $value, 0, "/", "", TRUE, TRUE);
}
?>
調用示例,將cookie var1設置為val1並將var2設置為val2,取消設置val3並在此之后重新加載頁面:
<span onClick="setMultiCookie('var1§val1µvar2§val2µval3§-unSetCookie-', 'RELOAD');" class="button">
它在大多數時間都有效,但是在某些情況下,尤其是對於表單標簽,則無效。 我不知道會發生什么 我確定php腳本有效。 我進行了一些跟蹤顯示,並測試了php setcookie return設置為true。 但是未設置cookie。 我想在設置完成之前會發生一些事情。 我在javascript同步部分加載頁面時遇到了這個問題。
如果您知道會發生什么或知道某種調查方法,我將很高興。
好。 同時我解決了我的問題。 我的示例不是一個很好的示例,因為它可以使用span標簽。 我不知道為什么,但不適用於按鈕標簽。 無論如何,我用span標簽替換了按鈕標簽,然后一切正常。
感謝SLaks和Kaddath對我的問題的解答。 我的網站是一個Intranet網站,需要AD登錄才能訪問(也用PHP編寫)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.