Angular前端POST请求遇CORS错误,GET请求正常
向Spring后端发送POST请求时遭遇CORS错误,GET请求却正常工作

我在向Java Spring后端发送POST请求时遇到了CORS错误,但从http://localhost:8080/api/currentPlayer发送的GET请求完全正常。
我已经在POST请求里添加了:
Access-Control-Allow-Origin Header": "*"
但依然收到该头部缺失的错误,这让我非常困惑。
以下是发起请求的Angular服务代码:
import { Injectable } from '@angular/core'; import { Player } from './Player'; import { Observable, catchError, map, of } from 'rxjs'; import { HttpClient, HttpClientModule } from '@angular/common/http'; import { HttpHeaders } from '@angular/common/http'; import { PlayerPost } from './PlayerPost'; @Injectable({ providedIn: 'root' }) export class PlayerService { constructor(private http: HttpClient,) { } private playerUrl = 'http://localhost:8080/api/currentPlayer'; httpOptions = { headers: new HttpHeaders({ 'Content-Type': 'application/json', 'Access-Control-Allow-Origin': '*' }) }; playerList: Player[] = [ { "id" : 0, "name" : "Thorsten", "stack" : 5000 }, { "id" : 1, "name" : "Marietta", "stack" : 5000 }, { "id" : 2, "name" : "Rüdiger", "stack" : 5000 }, { "id" : 3, "name" : "Hans", "stack" : 5000 } ] index: number = 0; getPlayersObservable(): Observable<Player[]> { return this.http.get<Player[]>(this.playerUrl); } getPlayerList(): Player[] { this.getPlayersObservable().subscribe((x:Player[]) => {this.playerList = x;}); return this.playerList; } postPlayer(player: PlayerPost) {this.http.post<any>(this.playerUrl, player, this.httpOptions).subscribe((res)=> console.log(res)); } }
我尝试过把Access-Control-Allow-Origin头设置为"http://localhost:8080/api/currentPlayer",也尝试在服务器响应中添加该头,但都没有效果。
编辑: 问题出在服务器端,需要让Spring允许跨域。通过在POST方法上添加@CrossOrigin注解解决了问题。GET请求正常而POST异常的情况,说明问题根源在服务器端。
内容的提问来源于stack exchange,提问作者bermuda99
相关产品推荐
相关产品推荐

