Innehållsförhandling är en teknik som beskrivs i HTTP-specifikationen (Hyptertext Transfer Protocol) som tillåter en fjärrklient att göra en mer specifik begäran till en webbserver. Metoden ger servern möjlighet att vara värd för flera typer av filer, dokument på olika språk och mer, var och en med olika kvalitetsnivåer. Dessa separata val lagras som en enda referens, betecknad med dess enhetliga resursidentifierare (URI), och är avsedda att tillhandahålla mer tillämpligt innehåll när det är tillgängligt på servern.
Där en URL (uniform resource locator) är en referens till en fil på en specifik plats, till exempel i en mapp på servern, kan en URI referera till vad som helst, praktiskt taget var som helst. Detaljerna för URI, såsom platsen för filen som ska levereras, namnet på filen och dess typ, utarbetas efter att innehållet har förhandlats fram. Detta gör att olika delar av innehåll kan sitta på olika platser, till exempel alla filer för ett visst språk organiserade under det språkets mapp på servern.
Tanken bakom innehållsförhandling är att webbservern ska leverera bästa möjliga innehåll för en given användaragent eller webbläsare. Det kan leverera vissa bildfiltyper eller annat innehåll till klienter som kan stödja dem. Detta är användbart när du är värd för flera versioner av en fil för att stödja flera webbläsarplattformar, till exempel mobila enheter.
För att göra allt detta beskriver HTTP två metoder för innehållsförhandling, samt föreslår möjligheten att kombinera de två. En metod är serverdriven förhandling. Med denna metod fattar servern bästa möjliga beslut om vad som ska levereras, baserat på vilken logik den än ges och vilket innehåll som finns tillgängligt. .
Det finns dock vissa svårigheter med serverdriven innehållsförhandling. Servern vet inte hur den ska svara på alla möjliga förfrågningar, så den måste göra gissningar baserat på logiken den gavs för att fatta dessa beslut. Den kan inte veta om webbläsaren körs på en mobil enhet eller om det begärda dokumentet är avsett att skickas direkt till en skrivare om det inte meddelas det. Det finns också integritetsproblem, eftersom den serverdrivna metoden förväntar sig att begäran skickar information om användaren som gör begäran.
Den andra metoden är känd som agentdriven innehållsförhandling. Här gör användaren en begäran till servern och servern skickar tillbaka en lista med tillgängliga alternativ, om några finns. Valet görs antingen automatiskt, baserat på tillgängliga webbläsare eller plattformsinställningar, eller manuellt i form av alternativ som presenteras i HTML. Den primära nackdelen med det agentdrivna alternativet är de flera förfrågningarna till servern för bästa möjliga innehåll. När en proxyserver cachar förfrågningar till en server som använder agentdriven förhandling, kommer den dock att kunna leverera lämpligt innehåll till alla användare bakom proxyn genom en enda begäran till cachen.