JavaScript và CouchDB - Làm cách nào để tránh các lỗi chính sách nguồn gốc chéo đối với các yêu cầu GET / POST / PUT / DELETE


0

Tôi cũng đang đăng câu hỏi này lên Stack Overflow. Theo ý kiến ​​của tôi, câu hỏi này chồng chéo cả hai ...


Tôi đang tạo một trình bao bọc JavaScript đơn giản cho giao diện REST-Ful của CouchDB, nhưng tôi bị mắc kẹt trong các vấn đề chính sách cùng nguồn gốc.

Cho đến nay tôi đã phát triển mã của mình để hoạt động tại địa phương - và chỉ như một bằng chứng về khái niệm - trên Mozilla FireFox. Máy chủ của tôi đang chạy trên localhost, cổng 5984.

Để vô hiệu hóa chính sách nguồn gốc chéo trong Mozilla FireFox, bạn có thể sử dụng Đặc quyền , nhưng điều đó chỉ khiến tôi hiểu được một nửa theo nghĩa là tôi không thể thực hiện các yêu cầu PUT đối với máy chủ của mình ...

/*
 * Including this in my JavaScript file only seems to disable cross-origin
 * policy checks for POST and GET requests in Mozilla FireFox.
 * PUT requests fail.
 */

netscape.security.PrivilegeManager.enablePrivilege(
    "UniversalBrowserRead UniversalBrowserWrite"
);



Có cách nào để tôi có thể định cấu hình máy chủ của mình để ẩn vị trí của nó để tôi không phải triển khai các công việc dành riêng cho trình duyệt để tránh các vấn đề chính sách cùng nguồn gốc không? Nếu không: những gì trình duyệt xung quanh tồn tại để vô hiệu hóa chính sách cùng nguồn gốc hoàn toàn?


Tôi nghĩ những câu hỏi như vậy sẽ được hỏi trong SO. Đối với các truy vấn liên quan đến máy chủ, có một nơi khác ... tôi không nhớ tên của nó. Có thể một số người khác có thể đề cập đến nó cho bạn
subanki

Câu trả lời:


0

Các chính sách nguồn gốc tương tự (SOP) đã được phát triển để ngăn chặn việc tiêm thông tin từ bối cảnh / miền này sang bối cảnh khác. Chúng được thực hiện và thực thi bởi trình duyệt. Mỗi nhà cung cấp có thể có các SOP riêng. Vì vậy, bất kỳ cách giải quyết khác có thể làm việc cho một trình duyệt trong khi nó sẽ thất bại trên một trình duyệt khác.

IMHO tùy chọn tốt nhất (và duy nhất?) Là sử dụng một số loại proxy.

Nếu bạn đang sử dụng Apache để lưu trữ ứng dụng web của mình, bạn có thể dễ dàng thiết lập proxy ngược. Tôi chấp nhận các yêu cầu và gửi chúng đến dịch vụ thực (REST-API). Phản hồi sẽ được gửi trở lại Trình duyệt. SOP sẽ không được áp dụng vì điểm cuối của REST-API sẽ không nằm trong một tên miền khác (tức là một máy chủ khác) nhưng trong miền của ứng dụng web của bạn (nhờ proxy).

[sửa] Đây là một lời giải thích tốt hơn: http://developer.yahoo.com/javascript/howto-proxy.html

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.