Angular 8 / NodeJS CORS error: Redirect location disallowed
Angular 8 / NodeJS CORS error: Redirect location disallowed
我在实验室环境中使用 Angular 8 和 NodeJS 后端。我在 Angular 中有一个按钮,它使用 POST 请求向后端服务器发送一个值。收到该值后,后端会根据 returns 中 JSON 中的状态代码的形式的值联系到 API 服务器,我需要在前端将其用于条件.
Angular 按钮逻辑如下所示:
this.form = this.fb.group({
ticket: [''],
})
}
const testTicket = this.form.value.ticket
submitForm() {
this.http.post('http://backend.com:8090/api/backendquery?testTicket='+ testTicket ,{}).subscribe (
(response) => {
console.log(response)
if(response != 'failure') {
this.ticketFound=true
this.ticketNotFound=false
status = 'Success'
} else {
// if(response == null) {
this.ticketNotFound=true
this.ticketFound=false
status = 'Failed'
}
})
}
连接到 API 服务器的后端代码如下所示:
var cors = require('cors');
app.use(cors());
app.post('/api/backendquery', function(req, res){
res.redirect('https://username:password@myserver.com/ticketquery='+req.query.testTicket);
});
我在 URL 中传递了凭据,因为 API 服务器需要身份验证。
我使用以下方法从 Postman 成功获得结果 URL:
http://backend.com:8090/api/backendquery?testTicket=12345
但是,当通过提交值使用浏览器时,我在控制台上收到以下错误:
'http://backend.com:8090/api/backendquery?testTicket=12345' 来自来源 'http://frontend:4200' 已被 CORS 策略阻止:重定向位置 '' 包含用户名和密码,这对于跨源请求是不允许的。
如您在后端代码中所见,CORS 包已启用,应该会处理 CORS 错误。我知道凭据不应出现在 URL 中,但是,在我的情况下,最好的方法是什么?
答案是 GET 请求不是在后端重定向,而是使用 "required" 包完成,然后保存到一个变量,然后转发回前端。
我在实验室环境中使用 Angular 8 和 NodeJS 后端。我在 Angular 中有一个按钮,它使用 POST 请求向后端服务器发送一个值。收到该值后,后端会根据 returns 中 JSON 中的状态代码的形式的值联系到 API 服务器,我需要在前端将其用于条件.
Angular 按钮逻辑如下所示:
this.form = this.fb.group({
ticket: [''],
})
}
const testTicket = this.form.value.ticket
submitForm() {
this.http.post('http://backend.com:8090/api/backendquery?testTicket='+ testTicket ,{}).subscribe (
(response) => {
console.log(response)
if(response != 'failure') {
this.ticketFound=true
this.ticketNotFound=false
status = 'Success'
} else {
// if(response == null) {
this.ticketNotFound=true
this.ticketFound=false
status = 'Failed'
}
})
}
连接到 API 服务器的后端代码如下所示:
var cors = require('cors');
app.use(cors());
app.post('/api/backendquery', function(req, res){
res.redirect('https://username:password@myserver.com/ticketquery='+req.query.testTicket);
});
我在 URL 中传递了凭据,因为 API 服务器需要身份验证。
我使用以下方法从 Postman 成功获得结果 URL:
http://backend.com:8090/api/backendquery?testTicket=12345
但是,当通过提交值使用浏览器时,我在控制台上收到以下错误:
'http://backend.com:8090/api/backendquery?testTicket=12345' 来自来源 'http://frontend:4200' 已被 CORS 策略阻止:重定向位置 '' 包含用户名和密码,这对于跨源请求是不允许的。
如您在后端代码中所见,CORS 包已启用,应该会处理 CORS 错误。我知道凭据不应出现在 URL 中,但是,在我的情况下,最好的方法是什么?
答案是 GET 请求不是在后端重定向,而是使用 "required" 包完成,然后保存到一个变量,然后转发回前端。