【发布时间】:2021-12-17 12:18:21
【问题描述】:
我已经构建了一个简单的 Spring Boot Rest 控制器,它只返回一个自定义 Java 对象 - 数据。一切都编译并正常运行。当我从端点获取数据时,我得到了预期的数据。
但是,在 Firefox 上使用“Inspect Element”查看引擎盖时,我看到了一个由于Content Security Policy (CSP) 而导致的错误。 Content-Security-Policy 错误说明如下:
“内容安全策略:该页面的设置阻止了在 http://localhost:8081/favicon.ico (“default-src”) 处加载资源。”
我尝试了一些解决方案,都无济于事。
- 我尝试通过 application.properties 禁用图标,但这似乎没有任何效果。
- 我创建了一个名为“favicon.ico”的图标并将其放置在正确的目录中。很烦人,这个页面还是报错,而我的其他页面都开始出现图标了。
- 我尝试了 许多 标题排列,包括将 Content-Security-Policy 标题设置为默认 src self。没有工作,尽管这可能是问题的根源,因为似乎有很多我没有完全掌握的活动部件。
- 我尝试为“/favicon.ico”创建一个 GET 端点,但这似乎根本没有完成任何事情。
- 此时我已将图标添加到我的目录中,因此当我尝试点击端点时,它只是向我发送了我的图标图像,该图标也显示在浏览器顶部的选项卡中,并且日志中没有错误。
- 我试图弄乱 WebSecurityConfigurerAdapter,但很快就失控了,坦率地说,其中很多都没有意义。
这是我的文件。
应用程序属性 = application.properties
spring.mvc.favicon.enabled=false
主文件 - DemoApplication
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class DemoApplication {
public static void main(String[] args) {
System.getProperties().put( "server.port", 8081);
SpringApplication.run(DemoApplication.class, args);
}
}
休息控制器 = 数据控制器
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class DataController
{
@GetMapping("/data")
public Data data()
{
return new Data(123, "abc");
}
}
返回类型 = 数据
public class Data
{
private final long id;
private final String data;
public Data(long id, String data) { this.data = data; }
public long getId() { return this.id; }
public String getData() { return this.data; }
}
【问题讨论】:
标签: java spring spring-mvc firefox content-security-policy