我正在尝试在Spring + Angular项目中实现对静态资源的处理请求。当Spring应用程序在http://localhost:4200
上运行时,Angular应用程序将在http://localhost:8080
上运行。
因此,当我需要获取图像时,angular发送一个看起来像http://localhost:4200/screenShots/image-name.jpg
的请求。为了处理此类请求,我创建了WebConfig
类:
@Configuration
public class WebConfig implements WebMvcConfigurer {
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
String path = "file:///" + *path to folder with images on my PC*
registry.addResourceHandler("/screenShots/**")
.addResourceLocations(path);
}
}
它不起作用,我收到 404(未找到)错误。我已经尝试过addind并删除@EnableWebMvc
和@CrossOrigin
批注,试图在类中添加addCorsMappings()
方法,没有任何帮助。
@Override
public void addCorsMappings(CorsRegistry registry) {
registry.addMapping("/screenShots/**")
.allowedOrigins("http://localhost:4200");
}
但是,当我在Google地址栏中输入http://localhost:8080/screenShots/image-name.jpg
(从:4200更改为:8080)字符串时,它会按预期返回我的图片,所以我想知道是否可以添加资源处理程序的某种@CrossOrigin
注释替代方法,因为我在Internet上尚未找到任何解决方案。谢谢!
Github仓库供那些好奇的人使用:https://github.com/Vladyslav-Bahlai/OktenGames
P.S。我已经解决了我的问题,不用费心编写您的解决方案,反正没人在乎,UWU
答案 0 :(得分:0)
例如,我将显示我的MVC
-配置。我有同样的问题。 Spring
没有看到HTML
文件。我请您注意 templates 文件夹。
@Configuration
public class MvcConfig implements WebMvcConfigurer {
/**
* Making our pages visible
*
* @param registry
*/
public void addViewControllers(ViewControllerRegistry registry) {
registry.addViewController("/login").setViewName("login");
registry.addViewController("/coffees").setViewName("coffees");
registry.addViewController("/teas").setViewName("teas");
registry.addViewController("/contacts").setViewName("contacts");
registry.addViewController("/home").setViewName("home");
registry.addViewController("/about").setViewName("about");
registry.addViewController("/registration").setViewName("registration");
registry.addViewController("/card").setViewName("card");
}
/**
* This method helps Spring discover file paths
*
* @param registry
*/
@Override
public void addResourceHandlers(final ResourceHandlerRegistry registry) {
registry.addResourceHandler("swagger-ui.html")
.addResourceLocations("classpath:/META-INF/resources/");
registry.addResourceHandler("/webjars/**")
.addResourceLocations("classpath:/META-INF/resources/webjars/");
registry.addResourceHandler("/**")
.addResourceLocations("classpath:/templates/");
}
}