具有基本身份验证和cors的Spring引导
我正在学习SpringBoot,我有一些关于基本身份验证和cors的问题 我在后端创建了两个页面和ajax 第一页是将ajax用户名和密码发送到后端,方法是POST。 此外,它还使用了基本身份验证。 如果成功,第一页将重定向到第二页具有基本身份验证和cors的Spring引导,spring,spring-boot,Spring,Spring Boot,我正在学习SpringBoot,我有一些关于基本身份验证和cors的问题 我在后端创建了两个页面和ajax 第一页是将ajax用户名和密码发送到后端,方法是POST。 此外,它还使用了基本身份验证。 如果成功,第一页将重定向到第二页 function getData () { alert(localStorage.getItem("token")); var settings = { "async": true,
function getData () {
alert(localStorage.getItem("token"));
var settings = {
"async": true,
"crossDomain": true,
"url": "http://localhost:10000/getAllEmployee",
"method": "GET",
"headers": {
"authorization": "Basic " + localStorage.getItem("token"),
"accept": "application/json",
"content-type": "application/json",
"cache-control": "no-cache"
}
}
$.ajax(settings).done(function (response, textStatus, xhr) {
console.log(response);
});
}
加载第二个页面后,第二个页面将ajax发送到后端。
它使用GET,除了HTTP.Status之外,它不会获取任何数据
这是我在第一页中的ajax函数
function login () {
var username = document.getElementById("username").value;
var password = document.getElementById("password").value;
alert(btoa(username + ":" + password));
var settings = {
"async": true,
"crossDomain": true,
"url": "http://localhost:10000/login",
"method": "POST",
"headers": {
"content-type": "application/json",
"accept": "application/json",
"authorization": "Basic " + btoa(username + ":" + password),
"cache-control": "no-cache",
}
}
alert(settings);
$.ajax(settings).done(function (response) {
console.log(response);
localStorage.setItem("token", btoa(username + ":" + password));
window.location = "file:///home/cyl/SecurityTest/pages/getEmployeePage.html"
});
}
这是我在第二页中的ajax函数
function getData () {
alert(localStorage.getItem("token"));
var settings = {
"async": true,
"crossDomain": true,
"url": "http://localhost:10000/getAllEmployee",
"method": "GET",
"headers": {
"authorization": "Basic " + localStorage.getItem("token"),
"accept": "application/json",
"content-type": "application/json",
"cache-control": "no-cache"
}
}
$.ajax(settings).done(function (response, textStatus, xhr) {
console.log(response);
});
}
这是我的控制器
@RestController
@EnableWebSecurity
@EnableGlobalMethodSecurity(prePostEnabled = true)
public class EmployeeController {
@CrossOrigin(origins="*", allowedHeaders = "*")
@PostMapping(path = "/login")
public ResponseEntity<String> login() {
return new ResponseEntity<String>(HttpStatus.ACCEPTED);
}
@CrossOrigin(origins="*", allowedHeaders = "*")
@GetMapping(path = "/getAllEmployee")
public ResponseEntity<String> getAllEmployee() {
//List<Employee> employeeList = this.employeeDAO.getAllEmployee();
return new ResponseEntity<String>(HttpStatus.OK);
}
}
但在第二页的步骤中,我得到了一个错误
“CORS策略已阻止从源“null”访问“”处的XMLHttpRequest:对飞行前请求的响应未通过访问控制检查:它没有HTTP ok状态。”
尽管我搜索了一些相关的问题,但我无法处理这个问题
除了这个问题,我在客户端存储身份验证令牌的方式是正确的吗?
如果没有,我怎么做
谢谢 如果您在本地计算机上运行相同的Spring项目,并且带有此标记的JS项目将允许您访问rest服务,则可以使用此Spring注释
@CrossOrigin(origins = "*", maxAge = 3600)
public class controllerRest{}
问候 如果您在本地计算机上运行相同的Spring项目,并且带有此标记的JS项目将允许您访问rest服务,则可以使用此Spring注释
@CrossOrigin(origins = "*", maxAge = 3600)
public class controllerRest{}
问候 您确定将令牌存储到本地存储的代码被调用了吗?@SimonMartinelli是的,我确定令牌被调用了。我使用alert来显示它,但它不是nul.lAre。您确定将令牌存储到本地存储的代码被调用了吗?@SimonMartinelli是的,我确定令牌被调用了。我用alert来显示它,它不是nul.l