Код: Выделить всё
@Configuration
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {
...
@Override
protected void configure(HttpSecurity http) throws Exception {
...
http.headers()
...
.and()
.crossOriginResourcePolicy()
.policy(CrossOriginResourcePolicyHeaderWriter.CrossOriginResourcePolicy.SAME_ORIGIN)
.and()
...;
}
Если кто-то попытается получить доступ, например, к изображению с нашего веб-сайта через свой собственный веб-сайт, например
- Создайте локальный файл test.html code>.
- Измените и сохраните его содержимое в

< /body>. - Откройте этот HTML-файл в браузере.
GET https://myexamplewebsite.com/animals/uploaded_documents /dog.jpg net::ERR_BLOCKED_BY_RESPONSE.NotSameOrigin 200 (ОК)
Как и ожидалось.
Однако , я бы хотел сделать исключение из приведенного выше заголовка для изображений ресурсов по определенному пути (например, /public_resources/**).
Таким образом, для этот общий URL-адрес изображения, но не выдаст ошибку, скажем, для URL-адреса изображения https://myexamplewebsite.com/public_resources/logo.jpg.
Конечно, я бы по-прежнему хотелось бы сохранить все остальные заголовки для этого URL-адреса public_resources, а также заголовок Cross-Origin-Resource-Policy Same-origin для всех изображений (и других ресурсов), не входящих в этот URL. /public_resources/** путь.
PS: Наш хост-сайт, для которого я использовал https://myexamplewebsite.com в своем вопросе здесь, является общим, основанным на клиенте и дополнительном филиале внутри этой компании (например, https://branchname.companyname.nl/ или https://companyname.nl/), поэтому я не могу жестко запрограммировать его в определенных заголовках.
< hr />
Что касается варианта использования, почему я хочу это сделать: в целом нам нужен этот заголовок, но изображения из этого пути /public_resources/ иногда используются в шаблонах электронной почты (например, логотипы), и когда клиент откроет это электронное письмо, он в настоящее время увидит неработающую ссылку на изображение из-за этого заголовка. Следовательно, почему у любого изображения из этого домена /public_resources/ должен отсутствовать этот заголовок, чтобы эти изображения можно было просматривать при встраивании в другие документы.
Я попытался перезаписать стандартную реализацию Spring CrossOriginResourcePolicy(), добавив следующее после всего остального в методе configure:
Код: Выделить всё
http.antMatches("/public_resources/**")
.headers()
.addHeaderWriter(new StaticHeadersWriter("Cross-Origin-Resource-Policy", "none"))
Я тоже пробовал что-то подобное как в этом ответе, создание отдельного класса, который расширяет WebSecurityConfigurerAdapter, и выполнение приведенного выше фрагмента кода в перезаписанном методе настройки, но это тоже не сработало.
Подробнее здесь: https://stackoverflow.com/questions/789 ... ame-origin
Мобильная версия