Tôi đang cố gắng để thiết lập hỗ trợ CORS trong grails, và tôi đang sử dụng bộ lọc sau:CORS trong grails - Tất cả các yêu cầu thất bại?
class CorsFilters {
def filters = {
all(controller:'*', action:'*') {
before = {
response.setHeader("Access-Control-Allow-Origin", "*")
}
}
}
}
Từ thử nghiệm, nó trông giống như các tiêu đề phản ứng được thiết lập đúng cho tất cả các yêu cầu, nhưng khi tôi thực hiện một yêu cầu bên ngoài chống lại localhost hoặc một số máy chủ có sẵn cho tôi, tôi nhận được lỗi sau:
XMLHttpRequest cannot load http://server:8080. Origin http://jsbin.com is not allowed by Access-Control-Allow-Origin.
This live example công trình trong trường hợp của tôi về Chrome, vì vậy tôi không biết những gì có thể xảy ra ở đây. Trong các yêu cầu thất bại, tôi đang cố gắng nhấn tomcat trực tiếp.
Điều gì có thể xảy ra để gây ra lỗi này?
Hai điều cần lưu ý. 1. Sử dụng localhost (tên miền cấp 1) không phải là một ý tưởng hay; Tôi không thể tìm thấy nguồn ngay bây giờ, nhưng tôi đã gặp rắc rối cách đây không lâu với điều này. Sử dụng tệp máy chủ của bạn để thiết lập máy chủ giả. 2. Mã nguồn trong JSBin có thực sự là những gì bạn đang sử dụng cho yêu cầu không? Nếu không, một số thư viện/khung công tác JS có thể gửi yêu cầu OPTIONS (được đặt trước chuyến bay) trước tiên, mà bạn cần phản hồi một cách thích hợp. Xác nhận nếu đây là trường hợp và tôi có thể cung cấp một phản ứng, tôi đã phát triển một giải pháp trong Grails. Chúc may mắn! – Esteban