在Angular中进行http.post()请求时,如果遇到状态码204无内容的问题,并且怀疑是CORS预检OPTIONS的问题,可以尝试以下解决方法:
const express = require('express');
const app = express();
// 设置CORS中间件
app.use((req, res, next) => {
res.setHeader('Access-Control-Allow-Origin', 'http://your-angular-app-url');
res.setHeader('Access-Control-Allow-Methods', 'GET, POST, OPTIONS, PUT, PATCH, DELETE');
res.setHeader('Access-Control-Allow-Headers', 'Content-Type, Authorization');
res.setHeader('Access-Control-Allow-Credentials', true);
next();
});
请将http://your-angular-app-url
替换为你的Angular应用的URL。
import { Injectable } from '@angular/core';
import { HttpClient } from '@angular/common/http';
@Injectable({
providedIn: 'root'
})
export class YourService {
constructor(private http: HttpClient) { }
postData(data: any) {
const url = 'http://your-express-server-url';
const options = { withCredentials: true }; // 设置withCredentials为true
return this.http.post(url, data, options);
}
}
请将http://your-express-server-url
替换为你的Express服务器的URL。
通过以上两个步骤,你的Angular应用应该能够成功发送http.post()请求给Node + Express.js服务器,而不会被卡住并返回状态码204无内容。