我有一个在两个docker容器上运行的应用程序,一个前端(react.js)和一个后端(java、Spring)。
我已经安装并运行了这些容器,可以验证它们是否可以通过ping相互通信。
注意到这个问题后,我研究了一下,发现了一个问题,一个用户gok提供了一些有用的信息和到spring文档的链接,这些信息非常丰富。
在发现问题是CORS问题之前,我已经按照前面问题中的指示将更改应用到后端代码。
因此,通过阅读spring文档,我将以下内容应用于我的课程
配置
@Configuration
@EnableWebMvc
public class WebConfiguration implements WebMvcConfigurer {
@Override
public void addCorsMappings(CorsRegistry registry) {
registry.addMapping("/api/blockchain/**")
.allowedOrigins("http://frontend:3000")
.allowedHeaders("*")
.allowedMethods("*")
.maxAge(3600);
}
}
注意:我尝试了本地主机和前端(容器名称)的映射名称,但都没有成功
控制器
@RestController
@RequestMapping(value = "/api/blockchain")
public class BlockchainController {
@CrossOrigin
@GetMapping(value = "/address/create")
public ResponseEntity<String> getNewAddress() {
String newAddress = blockchainService.getNewAddress();
if (StringUtils.isNotBlank(newAddress)) {
return new ResponseEntity<String>(newAddress, HttpStatus.OK);
}
return new ResponseEntity<String>(HttpStatus.INTERNAL_SERVER_ERROR);
}
注意:在被问及控制器类还有更多内容之前,我只包括了必要的内容。
控制台错误
Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at http://multichain-api:8080/api/blockchain/address/create. (Reason: CORS request did not succeed).
这个错误总是出现,并且自从我在我的应用程序中包含cors配置以来一直没有改变。容器日志中也没有显示任何错误。
任何对此的帮助或见解都将不胜感激。
这对我在当地的工作很有效。
@CrossOrigin(origins = "http://frontend:3000")
@GetMapping(value = "/address/create")
public ResponseEntity<String> getNewAddress() {
...}
我以前是这样做的,你能试试吗?与您尝试的不同,我添加了一些exposedHeaders()。
@Configuration
@EnableWebMvc
public class WebConfiguration implements WebMvcConfigurer {
@Override
public void addCorsMappings(CorsRegistry registry) {
registry.addMapping("/api/blockchain/**")
.allowedOrigins("http://frontend:3000")
.allowedHeaders("*")
.allowedMethods("*")
.exposedHeaders("Access-Control-Allow-Headers",
"Access-Control-Allow-Origin, Origin, Accept, X-Requested-With, " +
"Content-Type, Access-Control-Request-Method, Access-Control-Request-Headers")
.maxAge(3600);
}
}
你可以删除用exeHeaders方法编写的不需要的标头。所以你的问题是没有公开“Access-Control-Allow-Origin”
。你只能使用这个或更多。
当我试图使用axios对Tomcat 8服务器进行API调用时,出现了以下错误。 被CORS策略阻止:请求的资源上不存在“Access Control Allow Origin”标头。
问题内容: Ajax使用回调,因为它是同步的。 我希望对远程URL块的调用直到出现一些答案为止 ,就像在Ajax中一样,但是没有异步部分,或者我要说要进行JAX调用。 是否有任何技术可以使以下事情发生(使用JQuery)(…使用JQuery或其他解决方案): 我只是想知道-想学习。 实际上,有时会阻塞直到回复合适为止。我并不是说要浏览器阻止,而只是脚本运行时。 问题答案: 您可以在使用jQuery
我正在尝试使用keycloak从现有的localhost(localhost:3000)登录页面进行登录。Keycloak在另一台主机上运行(http://kchost:38080)。我知道这不是推荐的登录方式,但我需要尽快适应现有的系统。 尝试卷曲: 错误是:CORS策略阻止了从来源“http://localhost:3000”访问位于“http://kchost:38080/auth/real
我正在与Django合作一个项目,该项目通过React前端上的Django Rest框架通过API提供数据。可浏览的API工作正常,但是,react前端在控制台中给出了一个错误。 我已成功安装django cors标头。 CORS策略阻止从http://127.0.0.1:8000/products/http://localhost:3000获取数据:请求的资源上不存在访问控制允许来源标头。如果不
我在本地主机上用Spring Boot配置了一个api。我的Spring Boot控制器应该允许CORS请求,因为我正在使用@CrossOrigin: 当使用Postman/cURL测试时,一切都工作正常(但cURL不关心CORS策略...)。现在,我正试图使用axios从我的反应应用程序中访问重新来源“http://localhost:8081/api/images”。我得到以下响应头,它确定请
我在使用https域和https套接字io时收到此警告。 我的代码是这样的: 希望有答案来解决这个问题。我已经从其他人那里搜索过,但我申请时发现不起作用。