В C#/.NET 3.5 Вы могли записать немного программы, чтобы сделать:
using (PrincipalContext context = new PrincipalContext(ContextType.Domain))
{
string controller = context.ConnectedServer;
Console.WriteLine( "Domain Controller:" + controller );
}
Это перечислит всех пользователей в текущем домене:
using (PrincipalContext context = new PrincipalContext(ContextType.Domain))
{
using (UserPrincipal searchPrincipal = new UserPrincipal(context))
{
using (PrincipalSearcher searcher = new PrincipalSearcher(searchPrincipal))
{
foreach (UserPrincipal principal in searcher.FindAll())
{
Console.WriteLine( principal.SamAccountName);
}
}
}
}
import os
if os.environ['REQUEST_METHOD'] == 'GET':
# blah
Это не прямой ответ на ваш вопрос. Но ваш вопрос проистекает из того, что вы делаете что-то неправильно.
Не пишите скрипты Python CGI.
Напишите приложение mod_wsgi . Еще лучше использовать веб-фреймворк Python. Их десятки. Выберите один, например Werkzeug .
Стандарт WSGI (описанный в PEP 333 ) значительно упрощает поиск информации в веб-запросе.
Реализация mod_wsgi быстрее и безопаснее, чем CGI.
Веб-фреймворк также проще, чем написание собственного сценария CGI или приложения mod_wsgi.
использовать веб-фреймворк Python. Их десятки. Выберите один, например Werkzeug .Стандарт WSGI (описанный в PEP 333 ) значительно упрощает поиск информации в веб-запросе.
Реализация mod_wsgi быстрее и безопаснее, чем CGI.
Веб-фреймворк также проще, чем написание собственного сценария CGI или приложения mod_wsgi.
использовать веб-фреймворк Python. Их десятки. Выберите один, например Werkzeug .Стандарт WSGI (описанный в PEP 333 ) значительно упрощает поиск информации в веб-запросе.
Реализация mod_wsgi быстрее и безопаснее, чем CGI.
Веб-фреймворк также проще, чем написание собственного сценария CGI или приложения mod_wsgi.
Почему вам нужно различать GET и HEAD?
Обычно вы не должны различать и должны обрабатывать запрос HEAD так же, как GET. Это потому, что запрос HEAD должен возвращать те же заголовки, что и GET. Единственная разница в том, что ответа не будет. Тот факт, что нет содержимого ответа, не означает, что вам больше не нужно возвращать действительный заголовок Content-Length или другие заголовки, которые зависят от содержимого ответа.
В mod_wsgi, на который вам указывают разные люди. , он фактически намеренно изменит метод запроса с HEAD на GET в некоторых случаях, чтобы защититься от людей, которые неправильно обращаются с HEAD по-разному. Конкретный случай, когда это делается, - это регистрация выходного фильтра Apache. Причина, по которой это делается в этом случае, заключается в том, что выходной фильтр может ожидать увидеть содержимое ответа и на основании этого сгенерировать дополнительные заголовки ответа. Если бы вы решили не создавать какое-либо содержимое ответа для запроса HEAD, вы лишите выходной фильтр содержимого, и добавленные ими заголовки могут не соответствовать тому, что будет возвращено из запроса GET. Конечным результатом этого является то, что вы можете заполнить кеши и работу браузера.
То же самое может применяться в равной степени и для сценариев CGI позади Apache, поскольку в этом случае все еще могут быть добавлены выходные фильтры. Для сценариев CGI нет ничего, что могло бы защитить пользователей от глупых действий и других действий для запроса HEAD.