Uygulamamdaki üçüncü taraf REST hizmetlerinden sonuçları alıyorum. Bu hizmetler, Request header field X-XSRF-TOKEN is not allowed by Access-Control-Allow-Headers in preflight response.
ile durur, çünkü angular2, bu başlığı varsayılan başına tüm isteklere standart olarak ayarlamıştır.Açısal 2 XSRFStrategy ürününü tek bir hizmet veya istek için devre dışı bırakın
Bunu devre dışı bırakma anladım:
import { HttpModule, XSRFStrategy } from '@angular/http';
export class NoXSRFStrategy {
configureRequest(req: Request) {
// Remove `x-xsrf-token` from request headers
}
}
@NgModule({
imports: [
HttpModule
],
declarations: [ ],
providers: [{ provide: XSRFStrategy, useFactory:() => new NoXSRFStrategy() }] // !!HACK!!
})
export class AppModule { }
Ama bu ne olursa olsun hizmet bunları sağlayan tüm istekler için bu devre dışı bırakır, yani bir modül düzeyinde çalışır.
İstediğim şey, hangi Http çağrısının bu tür başlıklardan çıkarılması gerektiğine ve bunları kullanmaya devam edebileceğine karar vermektir. Yukarıdaki çözümle hizmeti ayrı bir modülde ayırmam ve sadece bu modül için NoXSRFStrategy
kullanmam gerekiyor. Bunu diğer modüllerdeki diğer hizmetlerle birlikte test etmedim, ancak umarım bu, global bir istek yapılandırması olarak NoXSRFStrategy
'u ayarlamaz.
@Injectable()
export class MyService {
constructor(private http: Http) { }
apiCall() {
return this.http.get('some.online/service.json', {useXsrf: false}); // ...or something... IDK
}
Ya da belki hizmet düzeyine:
Sadece ben mümkün olmak istiyorum neyi göstermek için X-XSRF- devre dışı bırakmanın bir yolu var olup olmadığını
@Injectable()
export class MyService {
constructor(private http: Http) {
this.http.setXsrfStrategy(NoXSRFStrategy); // For only this http instance...
}
bilen var mı Bir modül seviyesi yapılandırması ayarlamak dışında TOKEN başlığı?
Aynı sorunu burada yaşıyor. Çözebilir misin? – Sebastian
Tüm uygulamam için bu genel olarak ayarlamak istemedim ve açısal uygulama ile üçüncü taraf sunucu arasındaki iletişim kutusunu işlemek için küçük bir NodeJS Express sunucusu oluşturmayı sonlandırdım. Ancak, uygulamanızın yaptığı tüm istekler için X-XSRF-TOKEN'i kaldırmaya özen göstermezseniz, yukarıdaki ilk kod bloğu sizin için hile yapar. –