withAddedHeader('Access-Control-Allow-Origin', '*') // 确保允许跨域 ->withAddedHeader('Access-Control-Allow-Methods', 'GET') ->withAddedHeader('Content-Type', 'text/event-stream') ->withAddedHeader('Cache-Control', 'no-cache') ->withAddedHeader('Connection', 'keep-alive'); var_dump("bbbbbbb"); $origin = $request->getHeaderLine('Origin'); if ($this->isAllowedOrigin($origin)) { var_dump("nicde"); $response = $response->withAddedHeader('Access-Control-Allow-Origin', $origin); $response = $response->withAddedHeader('Access-Control-Allow-Credentials', 'true'); } // 开始流式传输 $this->container->get(\Swoole\Http\Response::class)->status(200); for ($i = 0; $i < 10; $i++) { // 模拟发送10个事件 $data = json_encode(['message' => "Event $i"]); var_dump("测试数据"); $response->write("data: $data\n\n"); usleep(1000000); // 暂停1秒 } return $response; } protected function isAllowedOrigin(string $origin): bool { // 实现你的逻辑来判断是否允许该来源 // 可以是硬编码的值,也可以是从数据库或其他地方获取的动态值 $allowedOrigins = ['http://localhost:3000', 'http://192.168.1.100:3000']; // 替换为你的前端地址 return in_array($origin, $allowedOrigins, true); } }