2012-12-01 17 views
7

Tôi đã có một ý tưởng cho một dự án liên quan đến một thiết bị đầu cuối Javascript sử dụng một kịch bản PHP quy định như một máy chủ để thực hiện các chức năng từ xa. Tôi hiểu rằng chính sách nguồn gốc tương tự sẽ là một trở ngại với một dự án như vậy, nhưng nhìn vào phân tích google, mà tôi sử dụng hàng ngày, có vẻ như họ có cách tránh vấn đề trên quy mô lớn.Google Analytics tránh chính sách gốc giống nhau như thế nào?

+1

Nói chung, 'thẻ script' & định dạng jsonp, đôi khi 'iframe' được sử dụng. – Haocheng

+0

Cảm ơn bạn đã đề cập đến jsonp, tôi không biết về phần bổ sung này. Tôi luôn tự hỏi tại sao google không tách JS và HTML, có vẻ như thẻ 'script' là rất quan trọng cho việc này. – Lee

+3

Từ những gì tôi nhớ, GA chèn (thông qua JS) một '' với thuộc tính src chứa tất cả thông tin máy chủ GA cần biết (không có giới hạn tên miền chéo khi nhúng hình ảnh). Hình ảnh thực tế được trả về tôi tin là một hình ảnh trống 1x1. – techfoobar

Trả lời

11

Cách hiện đại cho phép các yêu cầu cross-domain là dành cho máy chủ để đáp ứng với các tiêu đề sau đây để bất kỳ yêu cầu:

Access-Control-Allow-Origin: * 

Điều này cho phép các yêu cầu từ bất kỳ máy chủ, hoặc cách khác một host cụ thể có thể được sử dụng thay của *. Điều này được gọi là Cross Resource Resource Sharing (CORS). Thật không may nó không được hỗ trợ trong các trình duyệt cũ, vì vậy bạn cần hack để làm việc xung quanh trình duyệt trong trường hợp đó (như một người bình luận nói có lẽ bằng cách yêu cầu một hình ảnh).

+0

Điều này có vẻ giống như một cách "sạch hơn". Đầu vào tốt – Lee

11

Google Analytics, Google AdWords và thực tế tất cả các nền tảng phân tích/tiếp thị web khác sử dụng các thẻ <img>.

Chúng tải chương trình JS, các chương trình đó xử lý bất kỳ theo dõi nào bạn đặt trên trang, sau đó tạo hình ảnh và đặt nguồn của hình ảnh bằng với miền của máy chủ bất kỳ, cộng thêm tất cả thông tin theo dõi của bạn vào chuỗi truy vấn. Điểm mấu chốt là nó không quan trọng như thế nào nó được ở đó:
máy chủ chỉ quan tâm về dữ liệu bên trong URL được gọi, và khách hàng chỉ quan tâm đến việc thực hiện cuộc gọi đến một cụ thể URL và không nhận được bất kỳ giá trị trả lại nào.
Vì vậy, ai đó đã chọn <img> năm trước và các công ty đã và đang sử dụng nó từ đó.

+0

Cảm ơn bạn thú vị. Điều này có vẻ rất khó để nói rằng ít nhất! – Lee

+1

@Lee It is. Nhưng theo dõi phân tích trang web và tiếp thị công cụ tìm kiếm đã ở xung quanh, dưới dạng này hay dạng khác, vì trước khi AJAX trở thành tên hộ gia đình, và mọi người vẫn gói các tập lệnh trong các thẻ nhận xét 'CDATA'. Lúc đó, thẻ 'img' có lẽ đã được chọn vì lợi ích' noscript'.Trên thực tế, nếu bạn xem xét theo dõi AdWords hoặc thậm chí là SiteCatalyst (một chương trình bạn có thể trả $ 60.000 +/năm), họ vẫn có phần 'noscript' bên dưới phần JS của họ. Vì vậy, JS sẽ tải các chương trình bên ngoài và xây dựng một hình ảnh tương tự như phiên bản 'noscript'. – Norguard

+1

@Lee mặc dù bị hack, thực hiện theo cách chính xác sẽ để lại các lỗ hổng lớn trong dữ liệu của bạn (thậm chí lớn hơn các lỗ hổng sử dụng phương pháp mỏng manh này), vì nhiều trình duyệt không hỗ trợ CORS. Trong 5 năm nữa, đây có thể là một giải pháp khả thi, bởi vì mỗi người đàn ông, phụ nữ và máy nướng bánh mì sẽ được truyền với JS gốc. Cho đến lúc đó, chúng tôi đang mắc kẹt với các giải pháp tối ưu phụ để tối đa hóa số lượng người được theo dõi, đi xuống một '' hoặc '