Я использую угловую директиву, чтобы вытащить html-файл с моего сервера IIS7 classic mode (классический из-за SSO). Чтобы удовлетворить CORS, мне нужно прочитать ORGIN из запроса и добавить заголовок в ответ файла html. Этот бит не имеет большого значения. Моя проблема связана с моим кодом, чтобы на самом деле сделать это для статического файла HTML.IIS7: манипулировать заголовками для html-файлов в классическом режиме
Итак, в классическом режиме мои обработчики/модуль определены в system.web, а не в system.webSever. Поэтому я не могу использовать флаг runAllManagedModulesForAllRequests = "true", который не является частью схемы для system.web.
В system.web у меня есть:
<httpHandlers>
<!--<add path="*.html" verb="GET,HEAD" type="System.Web.StaticFileHandler" />-->
<add path="*.html" verb="GET,HEAD" type="My.Namespace.CrossOriginHandler, My.DLL.Name" />
<add path="*" verb="*" type="System.Web.HttpNotFoundHandler" />
</httpHandlers>
<httpModules>
<add name="CrossOriginModule" type="My.Namespace.CrossOriginModule, My.Dll.name" />
</httpModules>
Это выполняет отлично на страницах MVC или WebAPI вызовов. Он не выполняется для моего статического файла HTML.
Я начинаю опасаться, что мне нужно будет написать собственный фильтр ISAPI. Есть ли другой способ подключить мой код? Конфигурация, которую я пропускаю или подключаю между ISAPI-фильтром и HttpModule?
я использовал <добавить имя = значение "Access-Control-Allow-Origin" = "*" />, но после того, как код переехал в нашей среде SSO UAT Мне нужно было указать $ httpProvider.defaults.withCredentials = true; что исключает использование шаблона. Правило перезаписи выглядит как билет и, возможно, спасло меня от беспокойства, если оно будет выполняться даже для статического контента. У меня была нагрузка обручей, чтобы проскочить, и мне действительно нужно написать это в сообщении в блоге, поэтому я не забуду это в следующий раз. – codinglifestyle