7

Tôi có ứng dụng tốc độ node.js cung cấp API RESTful và tôi đang sử dụng hộ chiếu để xác thực Facebook. Tôi đã bật tất cả cấu hình CORS ở phía máy chủ và có thể sử dụng API thông qua jQuery Ajax. Nhưng đối với xác thực Facebook, tôi nhận được lỗi sau:"không được phép đối với các yêu cầu có nguồn gốc chéo yêu cầu preflight" trong thông tin đăng nhập facebook hộ chiếu?

XMLHttpRequest cannot load http://localhost:3000/auth/facebook. The request was redirected to 'https://www.facebook.com/dialog/oauth?response_type=code&redirect_uri=http%…_me%2Cuser_checkins%2Cuser_likes&client_id=12345678&type=web_server', which is disallowed for cross-origin requests that require preflight. 

/auth/facebook endpoint is this.

app.get('/auth/facebook', 
    passport.authenticate('facebook', { 
     scope: ['email', 'user_about_me', 'user_checkins', 'user_likes'], 
     failureRedirect: users.authFailCallback 
    }), users.signin); 

Về cơ bản nó được chuyển hướng đến API của Facebook (302) không cho phép CORS. Có cách nào để giải quyết vấn đề này không? Hoặc tôi cần phải gọi các API Facebook từ phía máy chủ?

+0

Tôi tin rằng từ viết tắt là CORS (Chia sẻ tài nguyên gốc) – Akrikos

+0

. đã chỉnh sửa. Cảm ơn –

Trả lời

4

này có vẻ như nó có thể là một lỗi webkit:

https://bugs.webkit.org/show_bug.cgi?id=112471

Bạn đã cố gắng tái tạo hành vi này trong Firefox mới nhất?

Đặt cược tốt nhất của bạn để sửa lỗi này ngay bây giờ (2013-12-05) là thực hiện cuộc gọi phía máy chủ nếu bạn có thể. Có thể bạn sẽ cần các yêu cầu phía máy chủ để cho phép tương thích IE 8 dù IE 8 không hỗ trợ nhiều đặc tả CORS. Tôi sử dụng cùng một tên miền proxy để có được IE 8 làm việc.

Chúc may mắn.

0

bạn không thể gọi api máy chủ sẽ dẫn đến 302 (chuyển hướng) từ giao diện người dùng. Vì vậy, bạn sẽ phải gửi người dùng trực tiếp đến máy chủ và chuyển hướng người đó đến đó để nhận kết quả lưu người dùng sau đó chuyển hướng đến bất cứ nơi nào bạn muốn

Các vấn đề liên quan