还有其他方法,都报错Access to XMLHttpRequest at 'http://localhost:8080/adminLogin' from origin 'http://localhost:8081' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource. xhr.js:251 POST http://localhost:8080/adminLogin net::ERR_FAILED 500
时间: 2023-10-16 15:36:00 浏览: 226
这个错误提示属于跨域资源共享(CORS)问题。CORS 是一种机制,它使用额外的 HTTP 头来告诉浏览器,哪些源(网站)具有运行访问的权限。错误提示中显示,你的请求源来自 `http://localhost:8081`,但是服务器返回的响应头中没有包含 `Access-Control-Allow-Origin` 属性,导致浏览器拒绝了响应。
解决这个问题的方法有多种。其中一种方法是,在服务器端设置响应头,允许来自特定源的请求。你可以在服务器端的响应头中添加以下代码:
```
Access-Control-Allow-Origin: http://localhost:8081
```
这个代码表示允许来自 `http://localhost:8081` 的请求。如果你想允许来自所有源的请求,可以把这个值设置为 `*`。
如果你使用的是 Express 框架,可以使用 `cors` 中间件来简化设置。你可以通过以下代码安装 `cors` 中间件:
```
npm install cors --save
```
然后在服务器端代码中添加以下代码:
```javascript
const express = require('express')
const cors = require('cors')
const app = express()
app.use(cors({
origin: 'http://localhost:8081'
}))
// 其他代码
```
这样,就能够允许来自 `http://localhost:8081` 的请求了。
相关问题
Access to XMLHttpRequest at 'http://localhost:8080/adminLogin' from origin 'http://localhost:8081' 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. xhr.js:251 POST http://localhost:8080/adminLogin net::ERR_FAILED为啥我配值还报错
这个错误是由于浏览器的同源策略导致的,浏览器默认限制了跨域请求。在这个错误信息中,它告诉我们在请求的头信息中缺少了 `Access-Control-Allow-Origin` 字段,这个字段是用来控制跨域请求的,如果缺少这个字段,那么浏览器就会拦截这个请求。
为了解决这个问题,我们需要在服务器端添加跨域访问的配置,以支持来自其它域的请求。在 Spring Boot 中,我们可以通过添加 `@CrossOrigin` 注解或者配置 WebMvcConfigurer 来实现跨域访问。
下面是一个使用 `@CrossOrigin` 注解解决跨域请求的示例代码:
```java
@RestController
public class AdminController {
@CrossOrigin(origins = "http://localhost:8081")
@PostMapping("/adminLogin")
public String adminLogin() {
// 处理管理员登录请求
return "admin login success";
}
}
```
在上面的示例代码中,我们在 `AdminController` 的 `adminLogin()` 方法上添加了 `@CrossOrigin(origins = "http://localhost:8081")` 注解,表示允许来自 `http://localhost:8081` 域的请求访问该接口。
如果您希望允许来自所有域的请求访问该接口,您可以将 `@CrossOrigin(origins = "http://localhost:8081")` 修改为 `@CrossOrigin(origins = "*")`。
希望以上信息能够帮到您解决问题。
设置了之后,访问后端接口的时候还是报错Access to XMLHttpRequest at 'http://localhost:3000/login' from origin 'http://localhost:8080' has been blocked by CORS policy: Request header field content-type is not allowed by Access-Control-Allow-Headers in preflight response.
你在后端设置的 CORS 响应头信息可能缺少对 `Content-Type` 的允许配置,导致浏览器在发送跨域请求时被拦截。
你可以尝试在后端的 CORS 响应头信息中添加 `Content-Type` 字段,允许浏览器发送带有 `Content-Type` 请求头的跨域请求。
以下是一个示例,在 Node.js + Express 框架中如何添加 `Content-Type` 的配置:
```javascript
app.use((req, res, next) => {
res.header("Access-Control-Allow-Origin", "*");
res.header("Access-Control-Allow-Headers", "X-Requested-With, Content-Type"); // 添加 Content-Type
res.header("Access-Control-Allow-Methods", "PUT, POST, GET, DELETE, OPTIONS");
res.header("X-Powered-By", '3.2.1');
res.header("Content-Type", "application/json;charset=utf-8");
next();
});
```
在上述示例中,我们在 `Access-Control-Allow-Headers` 中添加了 `Content-Type`,以允许浏览器发送带有该请求头的跨域请求。
请注意,根据你的实际需求和安全要求,可能需要进一步细化对于 `Content-Type` 的配置。确保只允许必要的请求头和方法,以提高安全性。
如果问题仍然存在,请提供更多相关的代码或错误信息,以便更好地帮助你解决问题。
阅读全文