2010-03-18 2 views
2

J'ai un filtre ISAPI que j'utilise pour effectuer la réécriture d'URL pour mon CMS. Je SF_NOTIFY_PREPROC_HEADERS le traitement des notifications, et d'essayer de le faire:Définition de valeurs d'en-tête personnalisées dans un filtre ISAPI IIS

DWORD ProcessHeader(HTTP_FILTER_CONTEXT *con, HTTP_FILTER_PREPROC_HEADERS *head) 
{ 
    head->SetHeader(con, "test1", "aaa"); 
    con->AddResponseHeaders(con, "test2:bbb\r\n", 0); 
    return SF_STATUS_REQ_NEXT_NOTIFICATION; 
} 

Cependant, je ne peux pas sembler lire ces valeurs en utilisant des variables ou des en-têtes de réponse du serveur en ASP ou PHP classique. Les valeurs sont manquantes. Je m'attends à ce que mes valeurs d'en-tête "test1" ou "test2" apparaissent, mais elles ne le sont pas. Est-ce que je fais quelque chose de mal ici?

Répondre

2

Je fini par comprendre, je manque un « : » au nom d'en-tête:

DWORD ProcessHeader(HTTP_FILTER_CONTEXT *con, HTTP_FILTER_PREPROC_HEADERS *head) 
{ 
    head->SetHeader(con, "test1:", "aaa"); 
    return SF_STATUS_REQ_NEXT_NOTIFICATION; 
} 

Cela crée maintenant une variable de serveur appelé « HTTP_TEST1 ».

1

Semble être correct. Mais les deux méthodes renvoient un BOOL. Vérifiez-les et appelez GetLastError() s'ils retournent FALSE.
EDIT:
Je ne suis pas tout à fait sûr, mais vous pouvez également essayer de retourner SF_STATUS_REQ_FINISHED au lieu de SF_STATUS_REQ_NEXT_NOTIFICATION.

+0

Je ne peux pas croire que j'ai oublié ça. :(L'appel SetHeader renvoie erreur 87. Je vais creuser plus loin. –

Questions connexes