Исключить определенные страницы ресурсов из заголовка Cross-Origin-Resource-Policy того же происхождения в Spring WebSecJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Исключить определенные страницы ресурсов из заголовка Cross-Origin-Resource-Policy того же происхождения в Spring WebSec

Сообщение Anonymous »

У нас есть класс Java, который расширяет Spring WebSecurityConfigurerAdapter и устанавливает все наши заголовки безопасности и тому подобное. Если оставить только соответствующие части кода, то сейчас это выглядит так:

Код: Выделить всё

@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()
...;
}
(с использованием Spring-framework.version 5.3.39; org.springframework.boot/spring-boot-starter-parent 2.7.18; и JDK версии 21)
Если кто-то попытается получить доступ, например, к изображению с нашего веб-сайта через свой собственный веб-сайт, например
  • Создайте локальный файл test.html code>.
  • Измените и сохраните его содержимое в
    Изображение
    < /body>.
  • Откройте этот HTML-файл в браузере.
Они увидят неработающее изображение и следующую ошибку консоли (проверено в Google Chrome):

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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»