下面的报错怎么办localhost/:1 Access to XMLHttpRequest at 'http://localhost:9090/User' 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.
时间: 2023-10-16 14:44:04 浏览: 61
这个报错是因为浏览器遵循了同源策略,阻止了从一个源加载的Web应用程序向不同源的REST API发送请求。出现这个问题是因为你的Web应用程序在localhost:8080上运行,而REST API在localhost:9090上运行,浏览器发现这两个不同的源,因此阻止了跨域请求。解决这个问题有两种方法:
1. 在服务器端添加CORS响应头。
在服务器端配置响应头,允许从不同的源访问资源。具体而言,需要在服务器端返回的响应头中添加Access-Control-Allow-Origin字段,值为允许访问资源的源。
2. 使用代理服务器
另一种解决方法是使用代理服务器。在这种情况下,Web应用程序将向代理服务器发送请求,代理服务器将请求转发到REST API服务器。由于代理服务器与Web应用程序在同一个源上运行,因此同源策略不会阻止请求。
相关问题
这个报错我怎们弄,具体的代码和文件怎么写。login:1 Access to XMLHttpRequest at 'http://localhost:9090/User' from origin 'http://localhost:9876' 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.
这个错误是因为浏览器的安全策略限制了跨域请求,需要在后端设置相应的响应头来解决。具体来说,需要在后端的响应头中添加 `Access-Control-Allow-Origin` 字段,值为前端请求的域名或 `*`。
如果你使用的是 Spring Boot 框架,可以在后端的 Controller 方法上添加 `@CrossOrigin` 注解,来设置响应头。示例代码如下:
```
@RestController
public class UserController {
@CrossOrigin(origins = "http://localhost:9876")
@GetMapping("/User")
public List<User> getUsers() {
// 处理业务逻辑,返回用户列表
}
}
```
这样就可以在响应头中添加 `Access-Control-Allow-Origin: http://localhost:9876` 字段,允许前端从 `http://localhost:9876` 发起跨域请求了。
如果你使用的是其他后端框架,可以查找相应的设置方式,或者在后端服务器上配置反向代理,将前端请求转发到后端服务器上,避免跨域问题。
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中添加一个过滤器类来配置跨域请求。
阅读全文