Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/spring-boot/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
具有基本身份验证和cors的Spring引导_Spring_Spring Boot - Fatal编程技术网

具有基本身份验证和cors的Spring引导

具有基本身份验证和cors的Spring引导,spring,spring-boot,Spring,Spring Boot,我正在学习SpringBoot,我有一些关于基本身份验证和cors的问题 我在后端创建了两个页面和ajax 第一页是将ajax用户名和密码发送到后端,方法是POST。 此外,它还使用了基本身份验证。 如果成功,第一页将重定向到第二页 function getData () { alert(localStorage.getItem("token")); var settings = { "async": true,

我正在学习SpringBoot,我有一些关于基本身份验证和cors的问题

我在后端创建了两个页面和ajax

第一页是将ajax用户名和密码发送到后端,方法是POST。 此外,它还使用了基本身份验证。 如果成功,第一页将重定向到第二页

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