Angular发送XHR请求不符合Java EE后端预期的问题解决咨询
前端请求适配问题求助
问题背景
我负责的项目前端基于Angular框架,后端采用Java EE。当前遇到的问题是:后端仅接受标准HTTP请求,但Angular的HttpClient发送的是XHR请求,导致接口调用报错。
可选解决方案
- 修改后端配置,开启CORS的
access-control-allow-origin(需确认是否有权限修改后端) - 调整前端代码,使请求不再以XHR形式发送,改为标准HTTP请求(我负责前端开发,可直接调整代码,优先选择此方案)
现有代码
数据请求服务代码
import { Injectable } from '@angular/core'; import { HttpClient, HttpParams } from '@angular/common/http'; import { HttpHeaders } from '@angular/common/http'; import { Observable } from 'rxjs'; import { catchError } from 'rxjs/operators'; import { Survey } from './survey'; import { HttpErrorHandler, HandleError } from '../http-error-handler.services'; import { environment } from '../../environments/environment'; @Injectable({ providedIn: 'root' }) export class SurveysDisplayService { surveysURL=environment.baseUrl+'api/surveys/'; private handleError: HandleError; constructor( private http: HttpClient, httpErrorHandler: HttpErrorHandler) { this.handleError = httpErrorHandler.createHandleError('DisplayService'); } // 从服务器获取问卷数据 getSurveys(): Observable<Survey[]>{ return this.http.get<Survey[]>(this.surveysURL) .pipe( catchError(this.handleError('getSurveys', [])) ); } }
调用服务的组件代码
import { Component, OnInit } from '@angular/core'; import { Survey } from './survey'; import { SurveysDisplayService } from './surveys-display.service'; @Component({ selector: 'app-survey', templateUrl: './surveys-display.component.html', providers:[SurveysDisplayService], styleUrls: ['./surveys-display.component.css'] }) export class SurveysDisplayComponent implements OnInit { surveys:Survey[]=[]; constructor(private surveysDisplayService:SurveysDisplayService) { } ngOnInit(): void { this.getSurveys(); } getSurveys(): void { this.surveysDisplayService.getSurveys() .subscribe(surveys => (this.surveys=surveys)); } }
Angular版本信息

求问如何修改前端代码,让请求以标准HTTP形式发送而非XHR?
内容的提问来源于stack exchange,提问作者MJoy99
相关产品推荐
相关产品推荐

