2012-11-12 47 views
31

Tôi gặp phải lỗi này trong Bảng điều khiển của Firefox: SecurityError: The operation is insecure và tính có lỗi là tính năng HTML5: window.history.pushState() khi tôi cố gắng tải gì đó bằng AJAX. Nó được cho là để tải một số dữ liệu nhưng Javascript dừng thực thi do lỗi.SecurityError: Thao tác không an toàn - window.history.pushState()

Tôi tự hỏi tại sao điều này có thể xảy ra. Đây có phải là một số cấu hình sai máy chủ không? Bất kỳ trợ giúp sẽ được đánh giá cao.

UPDATE: Vâng, đó là một lỗi máy chủ với tên miền không phù hợp: http://en.wikipedia.org/wiki/Same-origin_policy

+4

Bạn đang truy cập trên URL 'tệp: ///'? – robertc

+0

@robertc ý của bạn là gì? Đó là 'http: //' mọi lúc. Tôi nghi ngờ nó có thể là do sử dụng tên miền phụ nhưng 'pushState' cố gắng đẩy chỉ'/', vì vậy nó không nên có bất kỳ tác động nào. – Atadj

+0

Tôi vừa kiểm tra ... – robertc

Trả lời

27

Hãy chắc chắn rằng bạn đang theo dõi các Same Origin Policy. Điều này có nghĩa là cùng một tên miền, cùng một tên miền phụ, cùng một giao thức (http vs https) và cùng một cổng.

How does pushState protect against potential content forgeries?

EDIT: Như @robertc aptly chỉ ra trong bình luận của ông, một số trình duyệt thực sự thực hiện chính sách an ninh hơi khác nhau khi nguồn gốc là file:///. Chưa kể bạn có thể gặp phải vấn đề khi thử nghiệm cục bộ với file:/// khi trang mong đợi nó đang chạy từ một nguồn gốc khác (và vì vậy, pushState giả định các kịch bản gốc sản xuất của bạn, không phải kịch bản cục bộ)

2

Trong trường hợp của tôi, tôi bị thiếu 'www. ' từ url tôi đã đẩy. Nó phải được kết hợp chính xác, nếu bạn đang làm việc trên www.test.com, bạn phải đẩy để www.test.com và không test.com

2

Bạn nên cố gắng không mở file với một phương pháp thư mục-explorer (tức file://), nhưng mở tập tin đó từ http:// (ví dụ: http://yoursite.com/ từ http://localhost/)

0

Tôi đã gặp sự cố tương tự khi gọi một tệp javascript khác từ tệp mà không đặt địa chỉ "vật lý" javascript. Tôi giải quyết nó bằng cách gọi nó cùng chiều từ html, ví dụ: "JS/archivo.js" thay vì "archivo.js"

2

Chúng tôi trải qua những SecurityError: Các hoạt động không an toàn khi người dùng vô hiệu hóa cookie của họ trước khi truy cập trang web của chúng tôi, mọi yêu cầu XHR tiếp theo đang cố gắng sử dụng phiên sẽ rõ ràng là không thành công và gây ra lỗi này.

+0

bạn đã giải quyết vấn đề này như thế nào? –