2010-08-21 33 views
22

tôi biết nếu trên trang web của riêng tôi, nếu người dùng của tôi là ngày: http://www.example.com/form.php
Cùng Policy xứ - AJAX & sử dụng các API công cộng

và tôi thực hiện một yêu cầu ajax từ trang đó để: http://example.com/responder.php

Nó sẽ thất bại vì chính sách cùng một nguồn gốc (tên miền phụ là khác nhau).

Điều tôi đang cố hiểu là, làm thế nào mà AJAX yêu cầu có thể lấy dữ liệu từ API như flickr khi yêu cầu và máy chủ rõ ràng là khác nhau.


Edit:

ví dụ: Tại sao công việc mã này?

$.getJSON('http://api.flickr.com/services/rest/?&;method=flickr...' 

(Referred this Community Wiki) Có sử dụng Cross Origin Resource Sharing?

Cảm ơn!

Trả lời

17

Có rất ít phương pháp được biết để làm việc xung quanh Chính sách gốc tương tự. Một kỹ thuật phổ biến là sử dụng "Chèn thẻ tập lệnh" chẳng hạn như trong JSONP. Vì thẻ <script> không bị ràng buộc bởi Chính sách xuất xứ giống nhau, một tập lệnh trên tên miền của bên thứ ba có thể cung cấp mã thực thi tương tác với chức năng gọi lại được cung cấp. Bạn có thể muốn kiểm tra phần "Mẹo và thủ thuật" trong bài viết sau đây để đọc thêm về chủ đề này:

Bạn cũng có thể quan tâm đến việc kiểm tra ra sau bài stack Overflow để đọc thêm về kỹ thuật khác để làm việc xung quanh Policy xứ Same:


UPDATE: Tiếp tục câu hỏi cập nhật:

Trích dẫn từ tài liệu jQuery trên $.getJSON(): "callback ="

Nếu URL bao gồm các chuỗi trong URL, yêu cầu được coi là JSONP thay thế.

+0

Không quá nhiều yếu tố được miễn khỏi Chính sách xuất xứ giống như JavaScript đó không có quyền truy cập vào dữ liệu thô được trả về. Nó phụ thuộc vào bên thứ ba cung cấp mã thực thi tương tác với một hàm bạn cung cấp. – Quentin

+1

@David: Cảm ơn. Cập nhật câu trả lời của tôi để chính xác hơn :) –

+1

aha! damn, jQuery làm tất cả các thủ thuật xử lý nó trong nền! :) KHÉO LÉO! Tình yêu jQuery --- Ref: http://insideria.com/2009/03/what-in-the-heck-is-jsonp-and.html – DMin

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