javascript - 如何在 Cookie 上强制 HttpOnly FALSE,以便 JavaScript 可以使用 PHP 跨域读取它们?

标签 javascript php ajax cookies nginx

我需要 X.com 上高度混杂的 cookie,因为安全性不是问题。如何强制在域 X.com 中创建的 Cookie 上的 HttpOnly 为 false,以便 AnyRandomUnexpectedDomain.com 上的 JavaScript 可以调用 X.com/readCookie.php 并且 readCookie.php 可以发回 X.com cookie 中的数据? p>

readCookie.php 有 header("Access-Control-Allow-Origin: *") 并且 nginx Web 服务器也有 Access-Control-Allow-Origin 完全开放。在 php.ini 中 session.cookie_httponly = 0,但是当然,这仅适用于 session ,而不是永久 cookie。通过此设置,远程执行调用和跨域 AJAX 数据流可以正常工作,但唯一的问题是添加到 readCookie.php 的 $_COOKIE["auth"] 调用不会返回任何内容,即使使用 HttpOnly 显式创建 auth cookie 也是如此设置为 FALSE,如下所示:

setcookie("auth",$secret,time()+3600*24*365,"/",null,false,false);

代码、Web 服务器、PHP 等中还需要什么,以便 $_COOKIE["auth"] 将 X.com cookie 的值返回到 AnyRandomUnexpectedDomain.com?

最佳答案

我使用session_set_cookie_params来设置cookie。这是我使用的代码。

 $session_name = 'somesessionname';
    $secure = false;   //for https
    $httponly = false;  //as per use in javascript
    if (ini_set('session.use_only_cookies', 1) === FALSE) {
       //err=Could not initiate a safe session 
        exit();
    }
    $cookieParams = session_get_cookie_params();
    session_set_cookie_params($cookieParams["lifetime"],
    $cookieParams["path"], 
     $cookieParams["domain"], 
        $secure,   $httponly);
    session_name($session_name);
    session_start();  

关于javascript - 如何在 Cookie 上强制 HttpOnly FALSE,以便 JavaScript 可以使用 PHP 跨域读取它们?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32798033/

相关文章:

javascript - 向 $resource 原型(prototype)添加一个函数

javascript - 我可以在新标签页上运行用户脚本吗?

php - CakePHP 虚拟字段是其他三个虚拟字段的总和?

php - 当我使用 composer 2 时,Heroku 检测到 composer 1

php - 通过 jQuery ajax 发送的内容被截断

javascript - 追加 div 类包含使用 javascript 的特定类

Javascript:参数可以是任何东西吗?

php - Facebook 发布带有链接和大图的帖子

javascript - 像 twitter 一样的字幕褪色 + steamlessly?

javascript - jQuery HTML anchor 标记渐进增强