Bru*_*oLM 5 angular-http angular
我正在向具有以下路由的服务器发出请求:
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());
Run Code Online (Sandbox Code Playgroud)
当我用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;
}
}
Run Code Online (Sandbox Code Playgroud)
我得到:
ok: false
status: 0
statusText: ""
type: 3
Run Code Online (Sandbox Code Playgroud)
在Chrome控制台中,我看到发出了请求,OPTIONS并且确实返回了404:
Request URL: http://localhost:3000/404/
Request Method: OPTIONS
Status Code: 404 Not Found
Run Code Online (Sandbox Code Playgroud)
去哪了 如何获得真正的错误代码?
我读到这可能是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();
});
Run Code Online (Sandbox Code Playgroud)
我认为CORs没问题...
但我不知道,会吗?
我不应该获得err地位404吗?
显然OPTIONS永远无法返回 a,404因为它会导致此错误:
预检响应具有无效的 HTTP 状态代码 404
end如果是请求,我将请求的标头更改为请求OPTIONS,否则继续:
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();
});
Run Code Online (Sandbox Code Playgroud)
然后请求在 Angular 应用程序上返回正确的数据:
ok: false
status: 404
statusText: "Not Found"
type: 2
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2285 次 |
| 最近记录: |