gpt4 book ai didi

Angular http 返回状态 0,但我期望 404

转载 作者:太空狗 更新时间:2023-10-29 17:57:04 25 4
gpt4 key购买 nike

我正在向具有以下路由的服务器发出请求:

app.use('/401', (req, res) => res.status(401).end());
app.use('/403', (req, res) => res.status(403).end());
app.use('/404', (req, res) => res.status(404).end());
app.use('/500', (req, res) => res.status(500).end());
app.use('/502', (req, res) => res.status(502).end());
app.use('/503', (req, res) => res.status(503).end());
app.use('/504', (req, res) => res.status(504).end());

当我使用 Angular 发出请求时(/404{}):

public async post(path: string, data: object): Promise<Response> {
try {
return await this.http.post(path, data).toPromise();
} catch (err) {
console.log('err', err);
throw err;
}
}

我得到:

ok: false
status: 0
statusText: ""
type: 3

在 Chrome 控制台中,我看到请求是使用 OPTIONS 发出的,它确实返回了 404:

Request URL: http://localhost:3000/404/
Request Method: OPTIONS
Status Code: 404 Not Found

它去哪儿了?如何获取真正的错误代码?

我读到这可能是 CORS 问题...我的应用程序在 4200 上,我的服务在 3000 上。在我的服务中,我排在最前面(在其他任何事情之前):

app.use(function(req, res, next) {
res.setHeader("Access-Control-Allow-Origin", "*");
res.setHeader("Access-Control-Allow-Credentials", "true");
res.setHeader("Access-Control-Allow-Methods", "*");
res.setHeader("Access-Control-Allow-Headers", "*");
next();
});

我不认为这是 COR 的问题...

但我不知道,可能是吗?

我不应该得到状态为 404err 吗?

最佳答案

显然 OPTIONS 永远不会返回 404,因为它会导致此错误:

Response for preflight has invalid HTTP status code 404

如果请求是OPTIONS 请求,我将 header 更改为end 请求,否则继续:

const headers = (req, res, next) => {
res.setHeader("Cache-Control", "no-cache");
res.setHeader("Access-Control-Allow-Origin", "*");
res.setHeader("Access-Control-Allow-Credentials", "true");
res.setHeader("Access-Control-Allow-Methods", "GET, HEAD, POST, PUT, PATCH, DELETE, OPTIONS");
res.setHeader("Access-Control-Allow-Headers", "Content-Type, Authorization, Accept");
};

app.use((req, res, next) => {
console.log(req.method);
headers(req, res, next);

if (req.method === 'OPTIONS') {
return res.end();
}

next();
});

然后请求在 Angular 应用程序上返回正确的数据:

ok: false
status: 404
statusText: "Not Found"
type: 2

关于Angular http 返回状态 0,但我期望 404,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45333314/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com