Về phía server, tất cả các bạn phải thiết lập là một nguồn tài nguyên web (ví dụ, trang) mà chấp nhận một yêu cầu GET
và trả về dữ liệu sử dụng các quy ước JSON-P, đó là:
callback({"data": "here"});
... trong đó tên hàm ("gọi lại" trong ví dụ đó) thường được lấy từ một trong các tham số chuỗi truy vấn (theo quy ước, tham số "gọi lại") và dữ liệu là văn bản JSON (mặc dù về mặt kỹ thuật, nó có thể là bất kỳ thứ gì hợp lệ trong một đối tượng JavaScript theo nghĩa đen, quy ước với JSON-P là hạn chế bản thân với những gì hợp lệ trong JSON). Vì vậy, ví dụ, giả sử rằng yêu cầu trông như thế này:
http://example.com/foo.php?callback=bar
Đó gọi là trang foo.php
(không phải là PHP, có thể bất kỳ động hệ thống server-side), nói với nó rằng chức năng chúng tôi muốn nó gọi là "bar". phản ứng của chúng tôi sẽ là:
bar({"data": "here"});
Về phía khách hàng, bạn phải thêm một yếu tố script
đến trang năng động, và cũng có thêm chức năng gọi lại đó sẽ được kích hoạt bởi các phản ứng JSON-P. Thông thường bạn muốn cung cấp cho chức năng đó một số tên ngẫu nhiên, và loại bỏ nó khi bạn đã hoàn tất.
Here's a complete example làm câu trả lời cho một câu hỏi khác tại đây trên Stack Overflow. Bạn có thể phải điều chỉnh nó một chút để sử dụng trong một phần bổ trợ của Firefox, nhưng các khái niệm thì giống nhau.
Nguồn
2012-03-01 15:48:57
Cảm ơn bạn rất nhiều! Các giải pháp CORS cố định tôi lên. –
Chỉ cần downvoted bc câu trả lời này giả định php, và do đó tôi thích T.J. Câu trả lời của Crowder bên dưới. – Steven2163712
@ Steven2163712 nếu bạn đọc vượt quá tiêu đề, vấn đề OP thực sự là CORS, bất kể ngôn ngữ. Trong khi câu trả lời của TJ là chung chung hơn (IMO php là chung chung đủ), nó không giải quyết vấn đề OPS. – soemarko