2012-06-29 17 views
5

Tôi tìm thấy nguồn gốc của vấn đề của tôi cho SuperAgent (http://visionmedia.github.com/superagent/) trên Firefox. Không chắc chắn nếu SuperAgent đang thực hiện nó trong cuộc gọi AJAX của nó hoặc nếu FireFox đang kích hoạt nó.Làm cách nào để ngăn SuperAgent AJAX gọi OPTIONS?

Về cơ bản, mỗi khi tôi thực hiện cuộc gọi AJAX, phương pháp OPTIONS đang được kích hoạt trên URL trước cuộc gọi AJAX thực tế. Khá khó chịu vì máy chủ hiện không hỗ trợ OPTIONS. Làm thế nào tôi có thể thực hiện một cuộc gọi mà không có nó sẽ crap và tái mã hóa máy chủ?

Cảm ơn

Trả lời

5

Ok tìm hiểu thêm một số chi tiết. Rất may thử nghiệm trên Safari đã cho tôi cái nhìn sâu sắc hơn về những gì đã thực sự xảy ra và tôi áp dụng kiến ​​thức của tôi ở đây.

Dường như tiêu chuẩn mà trình duyệt đang gọi phương thức OPTIONS trước khi thực hiện cuộc gọi AJAX thực. Có vẻ hơi hách.

Vì vậy, để có được xung quanh nó, tôi chỉ cần thêm một catch-tất cả trong máy chủ proxy ngược của tôi để xử lý mỗi cuộc gọi OPTIONS. Bạn có thể xem các câu hỏi dưới đây để biết mã:

Play! 2.0 easy fix to OPTIONS response for router catch-all?

Và nếu bạn muốn đọc lên nhiều hơn về lý do tại sao các trình duyệt đang làm điều này, xem tại đây:

Why am I getting an OPTIONS request instead of a GET request?

OPTIONS là từ CORS tiêu chuẩn.

0

Tắt tính năng bảo mật trên web trong các ảo ảnh cũng giúp giải quyết sự cố này (--web-security=no). Bởi vì tôi không có quyền truy cập vào máy chủ API để thực hiện thay đổi cho phương pháp OPTION.