0
我在Spring中使用OAuth2并拥有资源服务器和认证服务器。我尝试从Angular2发送GET到资源服务器。对于OPTIONS,我得到302。我在日志中没有看到任何东西。无论是在资源服务器还是授权服务器中。春季OAuth2预检返回302
有没有人有任何提示如何调试?可能是Spring在我的代码到达之前以某种方式返回302。
这里是我的角码(保持注释掉线,以显示我已经尝试过)
import { Injectable } from '@angular/core';
import { AuthHttp } from 'angular2-jwt/angular2-jwt';
import { Observable } from 'rxjs/Observable';
import { Http, Headers } from '@angular/http';
import { tokenNotExpired } from 'angular2-jwt';
import { Common } from '../common/common';
@Injectable()
export class ResourceService {
constructor(private authHttp: AuthHttp, private http: Http) {
}
getResource(): Observable<any> {
console.debug('requesting resources... tokenNotExpired: ' + tokenNotExpired());
let headers = new Headers();
headers.append('Content-Type', 'application/json');
headers.append('Accept', 'application/json');
// headers.append('Access-Control-Request-Method', 'GET');
let authToken = localStorage.getItem(Common.tokenName);
// console.debug('authToken: ' + authToken)
var authJson = JSON.parse(authToken);
// console.debug('authJson: ' + authJson);
// console.debug()
headers.append('Authorization', `Bearer ${authToken}`);
headers.append('x-access-token', authToken);
//headers.append('Authorization', 'Basic ' + localStorage.setItem(Common.tokenName));
return this.authHttp.get('http://localhost:9998/resource', { headers: headers });
//return this.http.get('http://localhost:9998/resource', {headers: headers}).map(res => res.json());
//return this.http.get('http://localhost:9998/resource').map(res => res.json());
}
}
一个302是一个重定向。你在哪里重定向?你有没有试过这样做'curl -vv',这样你可以看到输出? –
这是棘手的部分。我试着用邮差发送带有标题的OPTIONS,我可以看到Angular2应用正在发送。然后我得到200返回。但我猜测我被重定向到一些白标签错误消息。但是,为了解决这个问题,我添加的所有不同的过滤器都是在邮递员发送时触发的。所以当从Angular2发送时,有些东西阻塞了我的过滤器。不知道如何弄清楚什么。 – user1716970
明白了。这很有用。我建议在这里发布你的Angular代码,这样比我更有Angular经验的人可以确保你的代码看起来正确。您可以添加到您的调用中的任何详细标志可能会生成更详细的响应,这很有帮助。这通常是我第一个解决这个问题的方法 - 增加更多详细信息:) GL。 –