Böngészőtől jövő kérés nyelvi beállításainak meghamisítása (Accept-Language Header állítása ISAPI filterben)

Minden böngészőben beállítható, hogy működése során milyen értéket küldjön az “Accept-Language” headerben a webszervernek. Sok webalkalmazás ez alapján dönti el, hogy milyen nyelvű felhasználói felületet renderel a böngészőnek küldött válaszba.

Accept-Language header értékénék beállítása

Néhány kulturált webalakalmazásban azt is be lehet állítani, hogy mi legyen az alapértelmezett nyelv arra az esetre, ha a böngésző olyat kér, amit az alkalmazás nem támogat. De sok webalkalmazásnál sajnos nincs lehetőségünk az alapértelmezett nyelv állítására. Ilyenkor megoldás lehet a bejövő kérések “Accept-Language” headerjének áthamisítása arra az értékre, amit alapértelmezettnek szeretnénk tudni. A “hamisítás” egy ISAPI filterben történik, mely beültethető a bejövő kérések útjába.

A lenti kódrészlet ezt teszi. Ha az “Accept-Language” header értéke nem “en-us”, “en-gb” vagy “hu”, akkor átírja azt “en-us”-re:

DWORD CAaitLanguageFilterFilter::OnPreprocHeaders(CHttpFilterContext* pCtxt, PHTTP_FILTER_PREPROC_HEADERS pHeaderInfo)
{
    char buffer[256];
    DWORD buffSize = sizeof(buffer);
    BOOL  bHeader=pHeaderInfo->GetHeader(pCtxt->m_pFC, "Accept-Language:", buffer, &buffSize);

    if( strncmp( buffer, "en-us", 256 ) && strncmp( buffer, "en-gb", 256 ) && strncmp( buffer, "hu", 256 ) )
    {
        char* nyelv = "en-us";
        pHeaderInfo->SetHeader( pCtxt->m_pFC, "Accept-Language:", nyelv );
        return SF_STATUS_REQ_NEXT_NOTIFICATION;
    }

    return SF_STATUS_REQ_NEXT_NOTIFICATION;
}

Az ISAPI filtert fejlesztéséhez a Visual Studio 6 (tényleg, csak ezért van fent a gépemen) ISAPI Extension Projectet használtam kiinduló alapnak:

vs6isapi

A lefejlesztett filtert az IIS management felületén lehet betenni a kérések útjába. Az, hogy ez a beállítás hol található, az a management felülettől függ. Lenti ábra a Windows XP-n default IIS 5.1 felületét mutatja - a fejlesztőknek, tesztelőknek talán ez a legfontosabb.

iisIsapiFilter



Dávid Zoltán

Dávid Zoltán Mérnök Informatikusként végeztem a BME-n, jelenleg webfejlesztéssel és gépi tanulással foglalkozom.

2009.07.07. 14:39:00 | Permalink | Hozzászólások: 0 | Tárgyszavak: , , ,


  • Jeffrey Snoverrel beszélgettem

    Balássy György (MS RD, ASP.NET MVP, MCTS) A TechEd kaliberű rendezvények egyik előnye, hogy az ember személyesen találkozhat azokkal, akik igazán közel vannak a tűzhöz. Ez persze nem minden téma esetén van így, mert vannak termékek, ahol az "evangélisták" tartják az előadásokat, de a kisebb csapatok esetén az előadók gyakran egyben a projekt szakmai agyai is. Tovább »
  • Build error TSD00259: dbschema does not exist

    Balássy György (MS RD, ASP.NET MVP, MCTS) Az egyik projektünkben a “Data Dude”-ot használjuk az adatbázis szkriptek kezelésére és azt kell mondanom, hogy egészen bevált. Azonban x64-es gépen nem sikerült lefordítanunk az x86-on tökéletesen működő projektet. Tovább »


Írja meg Ön is véleményét!


Hozzászólásokat csak regisztrált, bejelentkezett felhasználóktól tudunk elfogadni!

Hozzászólások