Ответ HttpListener на запрос OPTIONS - PullRequest
0 голосов
/ 02 ноября 2011

У меня есть консольное приложение на основе HttpListener.Он использует пользовательские заголовки для определения функции, которую пытается выполнить консольный клиент (который основан на HttpWebRequest и отлично работает).

Мой друг пытается создать клиент для этого приложения, используя другую платформу, котораятребует, чтобы при использовании пользовательских заголовков он сначала отправлял запрос OPTIONS на сервер.

Не вдаваясь в религиозные дебаты о том, почему я использую IIS или не использую IIS, или какой пакет клиента использует мой друг и т. Д., Есть ли у кого-нибудь понимание того, как правильно реагировать на запрос параметров?Я не могу найти ссылку, которая поможет с этим.Из того, что я собираю, мне нужно ответить, что я разрешаю OPTIONS, GET, PUT и каким-то образом список пользовательских заголовков, которые я приму.

Больше контекста (03.11.11)

Я знаю, что HttpListener разрешит запрос OPTIONS - моя задача состоит в том, как отформатировать и обработать ответ, чтобы показать, что я разрешаю OPTIONS, GET, PUT, а затем список пользовательских заголовков, которые я принимаю, используя HttpListenerResponse.

Мой код для типичного ответа выглядит следующим образом:

        try
        {
            // set the status code
            HttpListenerResponse response = context.Response;
            response.StatusCode = status;

            // build the HTML output
            string output_string;

            if (obj is string)
            {
                output_string = obj.ToString();
            }
            else
            {
                output_string = ia_serialize_xml<T>(obj);
            }

            byte[] buffer = System.Text.Encoding.UTF8.GetBytes(output_string);
            response.ContentLength64 = buffer.Length;
            Stream output = response.OutputStream;
            output.Write(buffer, 0, buffer.Length);
            output.Close();
        }
        catch (Exception e)
        {
            ia_exception("ia_sendresponse", "General exception sending response " + status, e);
            return;
        }

Я не могу понять, как это сделатьто же самое с ответом на запрос ОПЦИИ согласно вышеупомянутому.(пожалуйста, не обращайте внимания на методы "ia_ *", хотя они должны быть достаточно понятны)

...