首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >从HTTP请求头字符串中获取Cookie值

从HTTP请求头字符串中获取Cookie值
EN

Stack Overflow用户
提问于 2022-02-05 09:17:10
回答 1查看 739关注 0票数 0

我正在尝试从HTTP请求字符串中获取cookie值。如何处理请求头字符串并获取其中的cookie值?是否有任何方法或任何不同的解决方案来处理它?

server.php

代码语言:javascript
运行
复制
<?php
$host = "127.0.0.1";
$port = 20205;

$sock = socket_create(AF_INET, SOCK_STREAM, SOL_TCP) or die("Could not create socket");
$result = socket_bind($sock, $host, $port) or die("Could not bind to socket");

$result = socket_listen($sock, 3) or die("Could not set up socket listener");

echo "Connection Established\n";

$agents = array();

do {
    $accept = socket_accept($sock) or die("Could not accept incoming connection");
    $header = socket_read($accept, 1024) or die("Could not read input");
    var_dump($header);
    perform_handshaking($header, $accept, $host, $port);
    while (socket_recv($accept, $data, 1024, 0) >= 1) {
        $data = unmask($data);
        $data = json_decode($data);
        $action = $data->action;
        if (isset($data->action) && $action == 'connect') {
            foreach ($agents as $key => $value) {
                if ($key == $agentid && $value != $accept) {
                    socket_close($value);
                    $agents[$key] = $accept;
                }
            }
        }
        break; //exist this loop
    }
} while (true);

这就是我从HTTP请求中获取头字符串的方式。

EN

Stack Overflow用户

发布于 2022-02-05 09:46:53

这是我如何解析头字符串的方法。

代码语言:javascript
运行
复制
function perform_handshaking($receved_header, $client_conn, $host, $port)
{
    $headers = array();
    $lines = preg_split("/\r\n/", $receved_header);
    foreach ($lines as $line) {
        $line = chop($line);
        if (preg_match('/\A(\S+): (.*)\z/', $line, $matches)) {
            $headers[$matches[1]] = $matches[2];
        }
    }

    $secKey = $headers['Sec-WebSocket-Key'];
    $secAccept = base64_encode(pack('H*', sha1($secKey . '258EAFA5-E914-47DA-95CA-C5AB0DC85B11')));
    //hand shaking header
    $upgrade  = "HTTP/1.1 101 Web Socket Protocol Handshake\r\n" .
        "Upgrade: websocket\r\n" .
        "Connection: Upgrade\r\n" .
        "WebSocket-Origin: $host\r\n" .
        "WebSocket-Location: ws://$host:$port/demo/shout.php\r\n" .
        "Sec-WebSocket-Accept:$secAccept\r\n\r\n";
    socket_write($client_conn, $upgrade, strlen($upgrade));
}
票数 0
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70996650

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档