401未经授权的错误角度5

时间:2018-07-30 08:35:13

标签: spring angular oauth-2.0 angular5

obtainAccessToken(loginData){
        let params=new URLSearchParams();
        params.append('grant_type','password');
        params.append('username',loginData.username);
        params.append('password',loginData.password);
        params.append('client_id','myid');
        console.log(params.toString());
        let headers = new Headers();
        headers.append('content_type','application/x-www-form-urlencoded');
        headers.append('Authorization','Basic '+btoa("myid:mypaasword"));
        console.log(headers)
        let options=new RequestOptions({headers:headers});
        console.log(options);
        this._http.post('...../oauth/token',params.toString(),options)
            .pipe(map(res=>res.json(),err=>console.log(err)))
            .subscribe(
                data=>this.saveToken(data),
                err=>alert('Invalid Credials')
            );
        }

在发送发布请求以访问我的spring应用程序enter image description here时,我总是会收到401未经授权的错误

2 个答案:

答案 0 :(得分:0)

它不是来自Spring。这是浏览器的安全性。 我想您的spring服务器位于与前端服务器不同的端口(或另一个IP?)上。

浏览器不允许对另一个端口/ IP进行Ajax请求(出于安全原因)。它称为CORS: https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS

在服务器端,必须将标头添加到HttpServletResponse中,以显式允许客户端域请求服务器。

答案 1 :(得分:0)

将cors插件添加到浏览器

firefox-> https://addons.mozilla.org/en-US/firefox/addon/cors-everywhere/

chrome-> https://chrome.google.com/webstore/detail/allow-control-allow-origi/nlfbmbojpeacfghkpbjhddihlkkiljbi?hl=en

关闭插件,然后再次打开。

如果有效,则问题出在您的其余api上。 在控制器中添加@crossorigin() 请点击以下链接: https://howtodoinjava.com/spring5/webmvc/spring-mvc-cors-configuration/ https://spring.io/guides/gs/rest-service-cors/