c # - webserver tvinger browseren til kun at åbne en parallelforbindelse

Indlæg af Hanne Mølgaard Plasc

Problem



Hej jeg forsøger at skrive en webserver i C #.

Serveren skal dynamisk oprette en hjemmeside baseret på nogle skabeloner, jeg definerede.

Problemet jeg har er, at du kun har adgang til websiden, hvis du indtaster et kodeord.

Så jeg besluttede at få browseren til at oprette en live-live-forbindelse, der passerer enhver anmodning gennem den.

Derefter har jeg kontrol over logget ind på klienter og ikke logget på klienter. Nu er problemet, at Firefox og Google Chrome, når det kommer til at anmode om billederne på hjemmesiden, åbner de bare en anden forbindelse fra den samme ip, men en anden port.

Min webserver mener, at den er en anden kunde og sender login http-siden i stedet for det ønskede billede.

Så hver gang hjemmesiden indlæser kun 1 - 4 billeder bliver faktisk sendt.


Nu er mit spørgsmål: Er der nogen måde at tvinge browseren IKKE til at åbne parallelle forbindelser?

Eller hvis det ikke er muligt, hvordan skal jeg håndtere problemet?


For dem, der kan lide at se nogle kode her, ser det ud som kernen i serveren, bare for at forstå mit problem:


void ThreadStart()
{
    while (true)
    {
        RunClient(listener.AcceptTcpClient());
    }
}
void RunClient(TcpClient c)
{
        Thread tht = new Thread(new ParameterizedThreadStart(RunIt));
        tht.IsBackground = true;
        tht.Start(c);//The login page is getting sent...
        thtt.Add(tht);
}


Tak på forhånd, Alex

Bedste reference


Godkendelse af en HTTP-forbindelse i stedet for individuelle anmodninger er forkert, forkert og forkert. Selvom du kan få browseren til at genbruge en enkelt forbindelse (som du ikke kan, fordi det ikke er, hvordan HTTP fungerer), ville du ikke kunne regne med at dette bliver respekteret af proxy eller gennemsigtige web caches.


Dette er (nogle af) hvilke cookies der blev opfundet for. Brug dem eller en slags sessionidentifikator indbygget i webadresserne.