我正在使用 Springboot ReactJS 和 MongoDB 开发一个项目。我已经实现了整个代码,但它没有从数据库中导入数据。它显示以下错误。
从源“http://localhost:8081”访问“http://localhost:8080/api/auth/file”处的 XMLHttpRequest 已被 CORS 策略阻止:不存在“Access-Control-Allow-Origin”标头在请求的资源上。
我浏览了通过 StackOverflow 找到的解决方案,并尝试了以下方法来解决这个问题,
- 添加@crossorigin
- 添加 chrome 扩展
- npm 安装 cors
但它仍然不起作用。
如果有人可以帮助我解决这个问题,我会很高兴。
控制器
package com.spring.mongodb.controllers;
import com.spring.mongodb.models.LogFile;
import com.spring.mongodb.models.LogRecord;
import com.spring.mongodb.models.LogRecordCollection;
import com.spring.mongodb.payload.request.BackupRequest;
import com.spring.mongodb.payload.request.DeleteFileRequest;
import com.spring.mongodb.repository.LogFileRepository;
import com.spring.mongodb.repository.LogRecordRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
import javax.validation.Valid;
import java.util.List;
@RestController
@CrossOrigin(origins = "http://localhost:8081")
@RequestMapping("/api/auth/file")
public class LogFileController {
@Autowired
LogFileRepository logFileRepository;
@Autowired private LogRecordRepository logRecordRepository;
@GetMapping("")
public ResponseEntity<?> getAllLogFiles() {
try{
List<LogFile> logFiles = logFileRepository.findAll();
return ResponseEntity.ok().body(logFiles);
}catch (Exception e){
return ResponseEntity.status(HttpStatus.EXPECTATION_FAILED).body(e.getMessage());
}
}
@DeleteMapping
public void deleteFiles(@Valid @RequestBody DeleteFileRequest request) {
List<String> recordIds = request.getRecordIds();
for (String recordId : recordIds) {
logFileRepository.deleteById(recordId);
LogRecordCollection collection = new LogRecordCollection();
collection.setCollectionName(recordId);
logRecordRepository.deleteAll();
}
}
}
请求从前端发送
await axios
.get("http://localhost:8080/api/auth/file")
.then((res) => {
console.log(res);
this.setState({
folders: res.data,
});
})
.catch(function (error) {
console.log(error);
});
this.setState({
loading: true
})