【问题标题】:Accessing xml using user's cookies使用用户的 cookie 访问 xml
【发布时间】:2023-03-11 10:20:01
【问题描述】:

用于游戏相关项目。

要访问游戏数据,用户必须“授权”访问。为此,他们访问了网站上的一个页面,该页面在用户的 PC 上设置了 3 个 cookie。

当用户随后查看某些 XML URL 时,游戏服务器会检查这些 cookie 是否正确,并返回所需的信息。

我的问题是,如何使用用户的 cookie 解析这些 XML 文件,为数据添加样式等?

如果我使用 cURL 加载 URL,并使用 CURLOPT_COOKIE 预先确定相关 cookie,它会正确返回信息。

但是,我不会知道用户的 cookie,因为它们仅对游戏的域有效。

我确信这是可能的,尽管可能不是通过这种方法,因为它在使用相同的数据之前已经完成。

cookies 集是:

toolbar_code = 19 digit auth code
toolbar_hash = 19 digit hashed username
toolbar_remember = true

【问题讨论】:

    标签: php xml cookies curl


    【解决方案1】:

    你不能跨域读取 XML(反正没有CORS,这还不够成熟)。

    让远程脚本检查 cookie 并将数据返回给调用方站点的最简单方法是将<script> 指向远程站点并在其中执行 JavaScript,从而为调用方提供数据。执行此操作的正常方法是JSONP

    客户端:

    <script type="text/javascript">
        function receiveData() {
            ...do something...
        }
    </script>
    <script type="text/javascript" src="http://gamedataserver/getdata.php?jsonp=receiveData"></script>
    

    服务器端:

    <?php
        header('Content-Type: text/javascript');
        header('Cache-Control: no-cache');
        if (...user auth is OK...) {
            $callbackfn= preg_replace('/[^a-z_]/', '', $_GET['jsonp']);
            $json= json_encode(...game data...);
            echo "$callbackfn($json);";
        }
    ?>
    

    【讨论】:

    • 里面有一些有趣的地方,但是我无法控制游戏的站点,所以肯定无法在那里执行js。不过,感谢您的想法。另外,“您无法跨域读取 XML” - 当我在远程 XML 文件上使用 cURL 并提供有效的 cookie 时,是否返回了 XML?
    • 是的,这是简单的客户端-服务器,而不是跨域。跨域是指一个站点引导用户向第三方发出请求。跨域访问 XML 文件是不可能的(目标服务器缺少显式方法来更改它,例如 CORS 和 JSONP 包装);否则这将是一个巨大的安全漏洞。如果游戏网站没有为您提供第三方脚本接口来获取数据,那是因为他们不希望第三方网站读取他们的数据。
    • 好吧,因为甚至有一个服务条款详细说明了如何使用/存储数据等,我会说他们这样做,只是通过一个令人困惑的系统。无论如何感谢您的帮助。
    猜你喜欢
    • 2023-02-22
    • 2017-01-27
    • 2012-03-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-31
    • 1970-01-01
    • 2011-03-16
    相关资源
    最近更新 更多