2016-03-29 2 views
0

Это еще один вопрос CORS. У меня странная проблема.
У меня есть старое приложение. У меня есть доступ к inetpub, но не к исходному коду (только DLL и web.config).
Поэтому, прежде чем я сделать любой POST вызов, есть предполетной вызов, который происходит, и каким-то образом, сервер теперь позволяет опции случиться.Запрашиваемый ресурс не поддерживает http-метод «ОПЦИИ».

Как я сделать эту работу с помощью всего Интернета. config или iis?

интересно, получить звонок работает. только почта не работает.

Я добавил следующее в Web.config АФИ

<add name="Access-Control-Allow-Origin" value="*" /> 
<add name="Access-Control-Allow-Methods" value="GET, POST, PUT, DELETE, OPTIONS" /> 

в моем тестовом приложении, когда я пытаюсь вызвать API, я посылаю следующее в заголовках запроса

OPTIONS http://OldWebApiurl HTTP/1.1 
Host: http://Oldwebapi.host 
Connection: keep-alive 
Access-Control-Request-Method: POST 
Origin: http://TestSite 
User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.87 Safari/537.36 
Access-Control-Request-Headers: accept, content-type 
Accept: */* 
Referer: http://testsite/page 
Accept-Encoding: gzip, deflate, sdch 
Accept-Language: en-US,en;q=0.8 

ответ

1

Как сделать эту работу только с изменениями в web.config или iis?

Я боюсь, что это может быть невозможно с внесением изменений в эти файлы. Например, если вы используете ASP.NET Web API (который, по-видимому, используется в соответствии с тегами, используемыми в вашем вопросе), вы можете обратиться к following tutorial, объяснив необходимые изменения, которые необходимо внести в исходный код, чтобы включить CORS.

Так Короче говоря, получить код этого веб-приложения от системы управления, добавьте config.EnableCors(); вызов секции самонастройки и украсить контроллеры/действия, которые должны быть доступны с CORS с атрибутом [EnableCors(...)]. Затем отмените изменения, которые вы сделали в исходном элементе управления, активируйте сборку и позвольте непрерывной доставке сделать все остальное и развернуть свои изменения в целевой среде. Тогда вы можете наслаждаться CORS.

интересно, получить звонок работает. только сообщение не работает.

Это совершенно нормально, наиболее распространенные браузеры просто не делают запрос предполетную для GET AJAX звонки, потому что те, которые считаются безопасными - те, которые не должны изменять любой стороне сервера состояния, чтобы они разрешены.

+0

Спасибо Дарин, Как я уже сказал, это старый код. Разработанная организацией больше не представлена. поэтому нет контроля источника/непрерывной сборки. У нас просто развернутые DLL в inetpub. Поскольку эти apis делают то, что они должны делать, это было не тронуто в течение длительного времени. –

+0

Ну, тогда я боюсь, что ты в значительной степени вздумал. Если это старый код, к которому у вас даже нет доступа к источнику, то почему вы даже пытаетесь делать такие вещи, как CORS и прочее? Пусть он умрет со своим наследием и начнет строить новые блоки. Почему вы даже задаете вопросы о том, как включить CORS в веб-API в этом случае, когда вы знаете, что ответ включает в себя изменение кода, как показано в статье, с которой я связан? –

+0

Мы уже делаем это, и, конечно, нам надоело :). Проблема в том, что мы выпускаем наше новое приложение поэтапно, и мы не можем выпустить первую версию, потому что ни одна из apis не работает. Переработка всех apis займет некоторое время. Я определенно надеялся, что я смогу заставить это работать с помощью настроек web.config. –

Смежные вопросы