На странице точек расширения в документах ImageResizer упоминается, что плагины могут «изменять заголовки http», но у них нет руководства или примера того, как это сделать.Я создал плагин, который реализует интерфейсы IPlugin
и IChache
для добавления заголовка HTTP, но это не так, потому что:
- Я НЕ хочу реализовывать или создавать "альтернативу"система кэширования "
- Не работает (изображение не отображается / отображается как пустое изображение), если я не включаю код
current.RemapHandler(New NoCacheHandler(e))
в конце метода Process()
.Я не понимаю, что делает эта строка или последствия переназначения обработчика
Вот моя текущая реализация
web.config
<?xml version="1.0" encoding="utf-8"?>
<configuration>
...
<resizer>
<plugins>
<add name="MyNamespace.CorsHeadersPlugin" />
<add name="Watermark" />
<add name="MvcRoutingShim" />
<add name="PsdReader" />
<add name="WicDecoder" />
<add name="WicEncoder" />
<add name="WicBuilder" />
</plugins>
</resizer>
...
</configuration>
CorsHeadersPlugin
Imports ImageResizer.Caching
Imports ImageResizer.Configuration
Imports ImageResizer.Plugins
Imports ImageResizer.Plugins.Basic
Public Class CorsHeadersPlugin
Implements IPlugin
Implements ICache
Private ReadOnly AllowedDomains As String()
Public Sub New()
AllowedDomains = {"http://allowthisdomain.com"}
#If DEBUG Then
AllowedDomains = AllowedDomains.Union({"http://localhost", "https://localhost"}).ToArray
#End If
End Sub
Public Function CanProcess(current As HttpContext, e As IResponseArgs) As Boolean Implements ICache.CanProcess
Return True
End Function
Public Sub Process(current As HttpContext, e As IResponseArgs) Implements ICache.Process
Dim origin = current.Request.Url.GetLeftPart(UriPartial.Authority)
If AllowedDomains.Contains(origin) Then
current.Response.Headers.Add("Access-Control-Allow-Origin", origin)
End If
current.RemapHandler(New NoCacheHandler(e))
End Sub
Public Function Install(c As Config) As IPlugin Implements IPlugin.Install
c.Plugins.add_plugin(Me)
Return Me
End Function
Public Function Uninstall(c As Config) As Boolean Implements IPlugin.Uninstall
c.Plugins.remove_plugin(Me)
Return True
End Function
End Class