Điều này trông giống như vòng lặp chuyển hướng ở bên Node.
Bạn đề cập đến máy chủ B là máy chủ nút, bạn có thể vô tình tạo vòng chuyển hướng nếu bạn thiết lập các tuyến không chính xác. Ví dụ, nếu bạn đang sử dụng tốc hành trên máy chủ B - máy chủ Node, bạn có thể có hai tuyến đường, và giả sử bạn giữ logic tuyến đường của bạn trong một mô-đun riêng biệt:
var routes = require(__dirname + '/routes/router')(app);
//... express setup stuff like app.use & app.configure
app.post('/apicall1', routes.apicall1);
app.post('/apicall2', routes.apicall2);
Sau đó, tuyến đường của bạn/router.js có thể trông như:
module.exports = Routes;
function Routes(app){
var self = this;
if (!(self instanceof Routes)) return new Routes(app);
//... do stuff with app if you like
}
Routes.prototype.apicall1 = function(req, res){
res.redirect('/apicall2');
}
Routes.prototype.apicall2 = function(req, res){
res.redirect('/apicall1');
}
Ví dụ đó là hiển nhiên, nhưng bạn có thể có vòng chuyển hướng ẩn trong một loạt điều kiện trong một số tuyến đường đó. Tôi bắt đầu với các trường hợp cạnh, giống như những gì xảy ra ở cuối các điều kiện trong các tuyến được đề cập, hành vi mặc định là gì nếu cuộc gọi ví dụ không có tham số đúng và hành vi ngoại lệ là gì?
Là một sang một bên, bạn có thể sử dụng một cái gì đó giống như nút-validator (https://github.com/chriso/node-validator) để giúp xác định và xử lý các yêu cầu hoặc bưu điện thông số không chính xác
// Inside router/routes.js:
var check = require('validator').check;
function Routes(app){ /* setup stuff */ }
Routes.prototype.apicall1 = function(req, res){
try{
check(req.params.csrftoken, 'Invalid CSRF').len(6,255);
// Handle it here, invoke appropriate business logic or model,
// or redirect, but be careful! res.redirect('/secure/apicall2');
}catch(e){
//Here you could Log the error, but don't accidentally create a redirect loop
// send appropriate response instead
res.send(401);
}
}
Để giúp xác định nếu nó là một vòng lặp chuyển hướng bạn có thể làm một trong một số thứ, bạn có thể sử dụng curl để nhấn url với cùng thông số bài đăng (giả sử đó là bài đăng, nếu không bạn chỉ có thể sử dụng chrome, nó sẽ lỗi trong bảng điều khiển nếu nó nhận thấy vòng lặp chuyển hướng) hoặc bạn có thể viết stdout trên máy chủ Node hoặc syslog bên trong (các) tuyến vi phạm.
Hy vọng điều đó sẽ giúp ích cho bạn, điều tốt bạn đã đề cập đến phần "gây ra bởi chuyển hướng", đó là tôi nghĩ rằng vấn đề.
Tình huống ví dụ ở trên sử dụng biểu thức để mô tả tình huống, nhưng tất nhiên vấn đề có thể tồn tại chỉ bằng cách kết nối, các khung công tác khác hoặc thậm chí là mã xử lý của riêng bạn nếu bạn không sử dụng bất kỳ khung công tác hoặc thư viện nào.Dù bằng cách nào, tôi sẽ làm cho nó trở thành thói quen để kiểm tra thông số tốt và luôn kiểm tra các trường hợp cạnh của bạn, tôi đã tự đặt mình vào vấn đề này một cách chính xác khi tôi đã vội vàng trong quá khứ.
Bạn có thể cung cấp thêm chi tiết về máy chủ A, như thư viện bạn đang nhập hay không. – user568109
Tôi đang sử dụng thư viện Yêu cầu Python để thực hiện yêu cầu –
Khó mà nói, nhưng có vẻ như bạn đã cấu hình Apache tuyến trước để chuyển hướng URL đến URL khác ** KHÔNG ĐƯỢC CHUYỂN TIẾP ** đến nút. Tôi nghĩ cấu hình apache ở đây là phần dữ liệu quan trọng. – slezica