Já jsem najít to těžké pochopit, chyba vyvolána tím, že mé aplikace, když se snaží využít REST API.
Moje app, čistý HTML, Javascriptu pomocí jQuery, je běžící na Jetty serveru. Server má implementováno Content-Security-Policy
:
Custom HTTP headers to be added to our responses: Content-Security-Policy:
default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval'; connect-src 'self';
img-src 'self' data:; style-src 'self' 'unsafe-inline'; base-uri 'self';
frame-ancestors 'self'; font-src 'self';frame-src 'self'|X-Frame-Options:
SAMEORIGIN|X-Content-Type-Options: nosniff|X-XSS-Protection: 1; mode=block|
Referrer-Policy: strict-origin|Feature-Policy: 'none'|Strict-Transport-Security:
max-age=63072000; includeSubDomains; preload
Chápu této části. Každý, kdo se snaží přístup k mé aplikace musí dodržovat tato omezení.
Nicméně, JavaScript kódu v mé aplikaci se pokusí zavolat Spring Boot REST API běží na stejném Linux VM (http://localhost:8080/... nebo http://server-host-name:8080/...). Přitom jsem si Content Security Policy violated when accessing http://localhost:8080...: content-src 'self'
.Tohle mě mate. Pokusu o přístup k mé aplikace v Jetty bez dodržování bezpečnostní politiky by měly zvýšit chybu. Ale proč by to hodit chybu, když se aplikace v Jetty je volání Jara Boot API, které nemá žádné takové omezení?
Musím uvolnit Obsah Bezpečnostní Politiky, omezení na Jetty serveru? Pokud ano, tak proč?
Shrnutí:
REST API: Jaro Boot HTTP API běží na stejném Linux VM
Jetty Server: CSP omezení, jak je uvedeno výše
JavaScript aplikace na Jetty: Volání Jara Boot API