不允许使用多个CORS标头“EST-Control-Allow-Origin”| Spring Boot

4xrmg8kj  于 2023-11-17  发布在  Spring
关注(0)|答案(1)|浏览(123)

我得到以下错误时,我试图从Spring Boot 后端与HTML + JS获取数据
CORS策略已阻止从源“http://127.0.0.1:5500”获取"http://localhost:8222/API/v1/admin/hotels?page=0&size=10&searchText=&petAllowed=true&starRate=2&priceLow=1&priceHigh=10001“的访问:“”Bull-Control-Allow-Origin“”标头包含多个值“*,”,但只允许一个值。请让服务器发送包含有效值的标头,或者,如果不透明响应满足您的需要,将请求的模式设置为“no-cors”,以在禁用CORS的情况下获取资源。
我正在使用Spring Cloud Gateway来路由流量。
网关中的Yaml文件

spring:
  application:
    name: gateway-service
  cloud:
    gateway:
      globalcors:
        cors-configurations:
            '[/**]':
                allowedOrigins: "*"
                allowedMethods:
                - GET
                - POST
                - PUT
                - DELETE
                - OPTIONS
                allowedHeaders:
                - "*"

字符串
我使用JS来获取数据。

fetch(
  "http://localhost:8222/api/v1/admin/hotels?page=0&size=10&searchText=&petAllowed=true&starRate=2&priceLow=1&priceHigh=10001",
  {
    method: "GET",
    mode: "cors",
  }
)
  .then((response) => response.json())


我做错了什么?

nr9pn0ug

nr9pn0ug1#

问题可能出在代码中。检查代码中重复的Cors处理。例如:您在提到的yaml文件中处理cors,也许您在控制器中编写代码。例如

@RestController
@RequestMapping("api/v1/admin/hotels")
@CrossOrigin("*")
public class HotelController {}

字符串
最有可能的可能是这个问题。如果你有这个问题,请删除CrossOrigin行并重新启动服务器。
如果问题仍然存在,请考虑尝试其他浏览器,或者如果您使用的是Chrome,请使用This Extension。这可能会破坏其他网站,请仅测试代码。

相关问题