Служба RESTful.NET и предпечатная проверка - PullRequest
1 голос
/ 11 ноября 2010

Я разрабатываю веб-сервис RESTful с WCF и C #. Служба работает нормально, но когда я сделал запрос со статической HTML-страницы, используя XMLHttpRequest, все браузеры, кроме IE (кто еще?) Сначала отправляют предварительное сообщение (https://developer.mozilla.org/en/http_access_control)) с запросом доступных параметров для службы . Такие сообщения появляются только тогда, когда я изменяю заголовки сообщения, чтобы отправить запрос POST.

Мой вопрос / предложение: знаете ли вы какой-либо способ поддержки такого рода сообщений в WCF / .NET? Моя идея состоит в том, чтобы реализовать метод для обработки предварительного сообщения; ответом будет стандартное ответное сообщение со всеми доступными опциями (GET, PUT, POST, DELETE), поскольку все эти операции будут доступны, а также сообщается, что единственным типом данных, доступным для данных в сообщениях, является JSON. После ответа браузер отправит обычный запрос, поэтому все должно работать правильно.

Что ты думаешь?

Ответы [ 3 ]

1 голос
/ 15 ноября 2010

Проблема решена! Я установил атрибут Method с помощью *, и теперь он работает нормально: сначала ответ на предварительный запрос, а затем реальный запрос принимается и обрабатывается. Код следует:

[OperationContract]
[WebInvoke(UriTemplate="*", Method = "*")]
void HandleHttpOptionsRequest();
1 голос
/ 11 ноября 2010

Вы можете поддерживать OPTIONS так же, как вы поддерживаете POST с атрибутом WebInvoke.Просто измени метод.В запросе OPTIONS нет ничего особенного.Вам просто нужно установить заголовок Allow в ответе.

0 голосов
/ 22 января 2015
[OperationContract]
[WebInvoke(UriTemplate="*", Method = "*")]
void HandleHttpOptionsRequest();

Это отличное решение, и вы можете реализовать IDispatchMessageInspector, чтобы довольно легко добавить необходимые заголовки CORS.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...