Access to XMLHttpRequest at 'https://applet-base-api-t.itheima.net/api/goods' from origin 'http://localhost:8080' has been blocked by CORS policy: The 'Access-Control-Allow-Origin' header contains multiple values '*, *', but only one is allowed.
时间: 2024-04-28 07:26:45 浏览: 8
这个错误是由于CORS(跨源资源共享)策略导致的。浏览器限制了从一个源加载的Web应用程序如何与来自另一个源的资源进行交互。如果接收响应的服务器没有正确配置其响应头,则会出现这个错误。在这种情况下,服务器在响应头中包含了多个'Access-Control-Allow-Origin'头部,而浏览器只允许一个。
要解决这个问题,您需要在服务器端进行更改。正确配置响应头以允许跨域请求。您需要确保服务器响应中只有一个'Access-Control-Allow-Origin'头部,该头部指定允许访问您服务器的域。例如,如果您的应用程序运行在http://localhost:8080,您可以将响应头设置为:
```
Access-Control-Allow-Origin: http://localhost:8080
```
这将允许来自http://localhost:8080的请求访问您的服务器。如果您希望允许多个域访问您的服务器,则可以将值设置为'*',但这并不是一个安全的做法,因为它允许任何域都可以访问您的服务器。
另外,您可以尝试使用代理来解决这个问题。在您的应用程序中,您可以设置一个代理来转发所有请求到目标服务器,并在代理服务器上设置正确的响应头来解决CORS问题。
相关问题
Access to XMLHttpRequest at 'http://localhost:8081/api/login' from origin 'http://localhost:8080'
根据提供的引用内容,你可以通过以下两种方式解决"Access to XMLHttpRequest at 'http://localhost:8081/api/login' from origin 'http://localhost:8080'?"的问题:
1. 在PHP中添加跨域配置:
```php
header("Access-Control-Allow-Origin: *");
header("Access-Control-Allow-Methods: GET, POST, OPTIONS, DELETE");
header("Access-Control-Allow-Headers: DNT,X-Mx-ReqToken,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Accept-Language,Origin,Accept-Encoding,token");
if ($_SERVER['REQUEST_METHOD'] == 'OPTIONS') {
exit();
}
```
2. 在Spring Boot中添加跨域配置:
```java
@Configuration
public class AccessControlAllowOriginFilter implements WebMvcConfigurer {
@Override
public void addCorsMappings(CorsRegistry registry) {
registry.addMapping("/*/**")
.allowedHeaders("*")
.allowedMethods("*")
.maxAge(1800)
.allowedOrigins("*");
}
}
```
这两种方式都是通过设置响应头来允许跨域请求。第一种方式是在PHP中添加相应的header头,第二种方式是在Spring Boot中添加一个过滤器类来配置跨域请求。
Access to XMLHttpRequest at 'https://mobile-api.zmfuture.net/test/common/uploadAttach' from origin 'http://localhost:8080' has been blocked by CORS policy: Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource.
这个错误是由于浏览器的同源策略(Same-Origin Policy)引起的。浏览器默认情况下只允许在同一个源(协议、域名、端口号都相同)下进行跨域请求。
出现这个问题的原因是你的前端应用(http://localhost:8080)尝试访问一个不同源的后端接口(https://mobile-api.zmfuture.net)。默认情况下,浏览器会发送一个预检请求(preflight request)来确认是否允许跨域访问。
在预检请求的响应中,后端接口应该包含一个名为 "Access-Control-Allow-Origin" 的响应头,并设置为允许访问的域名。然而,根据你提供的错误信息,该响应头并未被正确返回,导致浏览器拒绝访问。
要解决这个问题,你可以在后端接口的响应中添加适当的CORS头信息,以允许前端应用从指定的源进行跨域请求。可以通过设置 "Access-Control-Allow-Origin" 响应头为前端应用的域名,例如:'http://localhost:8080'。
如果你无法修改后端接口的响应头,你也可以考虑使用代理服务器来转发请求,或者在前端应用中使用JSONP或者WebSocket等其他方法来避免跨域问题。