reactjs - React App 无法在 OpenShift 中调用 Spring Boot Web 服务
问题描述
给定一个在 OpenShift 中部署在其自己的 pod 中的 React 应用程序,以及在另一个 pod 中部署的 Spring Boot Web 服务,但在相同的命名空间中,React 应用程序无法调用该 Web 服务。
Spring Boot webservice 有一个服务:
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
backend-api ClusterIP <Redacted> <none> 8080/TCP,8443/TCP,8778/TCP 6m
React 开发者工具显示了这个问题:
backend-api:8080/api/widgets:1 Failed to load resource: net::ERR_CONNECTION_TIMED_OUT
在 React pod 上,curl -v http://backend-api:8080/api/widgets
正确运行会使用数据和 200 响应代码进行响应。
我们尝试将 Spring Boot 应用程序配置为允许 CORS:
@Bean
public WebMvcConfigurer corsConfigurer() {
return new WebMvcConfigurerAdapter() {
@Override
public void addCorsMappings(CorsRegistry registry) {
registry.addMapping("/**").allowedMethods("HEAD", "GET", "PUT", "POST", "DELETE", "PATCH");
}
};
}
但这并没有改变任何东西。
我们希望将 Web 服务保存在一个单独的 pod 中,并且不希望它在此命名空间之外可用。
更新
XHR 从@HMR 获取每个评论的结果
fetch("http://backend-api:8080/api/widgets", {
"headers": {
"accept": "application/json, text/plain, */*"
},
"referrer": "<redacted>",
"referrerPolicy": "strict-origin-when-cross-origin",
"body": null,
"method": "GET",
"mode": "cors",
"credentials": "omit"
});
解决方案
推荐阅读
- angular - 根据动态表单控件更改更新文本值
- anaconda - Anaconda 导航器打不开
- api - 带有 json 正文的 Jmeter POST API
- python - 站点重新加载后,Django注册页面重新填充输入数据
- javascript - 使用 ReactJS 选择一些 JSON 数据时遇到问题
- python - 带有由字符串定义的 AND/OR 条件的 IF 语句
- r - 如何在 levelplot 中调整 NA 值的颜色?
- laravel - 尝试按类别显示帖子时找不到错误 404
- matlab - 是否可以使用 fitlm 为 Matlab 中的一个特定变量在多元线性回归中设置一个固定点?
- django - DRF 仅序列化 JSONField 的选定键