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。 –