Dưới đây là một số thông tin cơ bản ...
- 1) http://www.html5rocks.com/en/tutorials/cors/ - Lưu ý rằng bạn cần phải đọc chút thông tin về "không đơn giản như vậy yêu cầu "như JSon rơi vào thể loại này.
- 2) http://stackoverflow.com/questions//cors-access-control-allow-origin-despite-correct-headers?rq=1
- 3) http://caniuse.com/# search = CORS - Thông tin chi tiết trình duyệt hỗ trợ CORS
- 4) http://stackoverflow.com/questions/10748537/access-control-allow-origin-on-playframework (ví Chơi 1 KHÔNG Chơi 2)
Vì vậy, dưới đây là những gì tôi đã triển khai:
Do yêu cầu không đơn giản (xem 1 ở trên) thực hiện cuộc gọi trước chuyến bay, bạn cần phải thêm thông tin sau vào tệp tuyến:
POST /url_to_json_webservice controllers.myJsonWebServices.myJsonWebService
OPTIONS /url_to_json_webservice controllers.myJsonWebServices.checkPreFlight
và sau đó thiết lập các phương pháp sau đây trong điều khiển của bạn:
public static Result checkPreFlight() {
response().setHeader("Access-Control-Allow-Origin", "*"); // Need to add the correct domain in here!!
response().setHeader("Access-Control-Allow-Methods", "POST"); // Only allow POST
response().setHeader("Access-Control-Max-Age", "300"); // Cache response for 5 minutes
response().setHeader("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept"); // Ensure this header is also allowed!
return ok();
}
Lưu ý tôi có thể thiết lập nhiều tiêu đề hơn cần thiết ở đây, vì vậy hãy kiểm tra những người thân mà bạn cần !!
Cũng nên nhớ để thêm dòng sau vào cuối của phương pháp điều khiển của bạn mà trả về thực sự kết quả JSON (như trong câu hỏi của tôi ở trên):
public static Result myJsonWebService() {
...
response().setHeader("Access-Control-Allow-Origin", "*");
return ok(toJson(jsonObject));
}
Tôi muốn cải thiện câu trả lời của bạn trên trang web của bạn. Nhưng tôi không thể đăng nhập. – Nick
Cảm ơn Nick, tôi đã tích hợp các cải tiến của bạn –