2014-06-18 14 views
14

Có thể áp dụng chia sẻ nguồn gốc chéo (CORS) trong Máy chủ ứng dụng Websphere Liberty Profile V8.5 không?Làm thế nào để xác định CORS trong Websphere Application Server Liberty Profile V8.5

Tôi đã tìm kiếm sổ đỏ nhưng không thể tìm thấy IBM đề cập gì về nó. (http://www.redbooks.ibm.com/abstracts/sg248076.html?Open)

Đó là không khả năng cho tôi để thiết lập các tiêu đề lập trình như thế này:

Access-Control-Allow-Origin: * 

(http://enable-cors.org/server.html)

+0

Tôi hiện đang điều tra http://software.dzhuvinov.com/cors-filter-installation.html: Tôi đang nhận được máng (tôi có thể thấy các bản in của mình trong dịch vụ web)! Chỉ có vấn đề là dịch vụ không bao giờ trở lại và trình duyệt của tôi tiếp tục chờ phản hồi ... –

+0

Vui lòng xem câu trả lời của tôi cho sự hỗ trợ chính thức của CORS trong Liberty. – ArthurDM

Trả lời

9

Bạn phải thêm lọ vào thư mục WEB-INF/lib của bạn như sau:

Trong bạn web.xml bạn phải thêm các quy tắc sau:

<filter> 
    <filter-name>CORS</filter-name> 
    <filter-class>com.thetransactioncompany.cors.CORSFilter</filter-class> 
</filter> 
<filter-mapping> 
     <filter-name>CORS</filter-name> 
     <url-pattern>/*</url-pattern> 
</filter-mapping> 
+0

Đừng nghĩ rằng điều này hoạt động nếu chiến tranh chỉ chứa html & javascript. Có cách nào khác để cấu hình máy chủ tự do WebSphere để bật COR cho trường hợp này không. – DarVar

+0

@DarVar Bạn đã giải quyết được sự cố của mình chưa? Nếu bạn chỉ phục vụ HTML và JavaScript, bạn sẽ không gặp phải những vấn đề này. Chỉ khi bạn đang gọi một webservice trên một socket khác. – GuyT

+0

Phương pháp này hoạt động nhưng rất tiếc trong trường hợp của tôi, chế độ tải lớp cần phải được thay đổi để làm cho nó hoạt động, điều này không được mong muốn. Một giải thích chi tiết hơn về phương pháp này được tìm thấy ở đây. https://clmpractice.org/2015/01/07/how-to-enable-cors-with-rational-team-concert-ccm-running-on-a-websphere-application-server-was-8-5/ –

0

Đối với những người đang tìm kiếm một cách giải quyết khi sử dụng IBM Websphere Application Server và tìm kiếm một câu trả lời để áp dụng CORS. (Bạn nên làm điều này theo chương trình) Tôi biết op đang tìm kiếm câu trả lời mà không cần sử dụng mã java hoặc khác ... Điều này có thể hữu ích cho người khác .. Viết bộ lọc cho phép bạn đặt tiêu đề phản hồi theo chương trình. Chẳng hạn như:

public class YourFilter implements javax.servlet.Filter{ 

    @Override 
    public void doFilter(ServletRequest request,ServletResponse servletResponse , FilterChain chain) throws IOException, ServletException { 
     HttpServletResponse response = (HttpServletResponse) servletResponse ; 
     response.setHeader("Access-Control-Allow-Origin", "*"); 
     response.setHeader("Access-Control-Allow-Headers","Access-Control-Allow-Origin, X-Requested-With", bla,bla...); 
    } 
} 
5

Bắt đầu từ tháng 1 năm 2016 Beta (chỉnh sửa: và bây giờ trong Liberty 8559), WebSphere Liberty hỗ trợ CORS nguyên bản. Bạn chỉ cần định cấu hình máy chủ.xml với các tùy chọn CORS mà bạn muốn, đây là ví dụ:

<cors domain="/sampleApp/path" 
    allowedOrigins="https://alice.com:8090" 
    allowedMethods="GET, DELETE, POST" 
    allowedHeaders="Accept, MyRequestHeader1" 
    exposeHeaders="MyResponseHeader1" 
    allowallowCredentials="true" 
    maxAge="3600" /> 

Thuộc tính miền dành cho gốc ứng dụng mà bạn muốn cấu hình này áp dụng, có nghĩa là nó sẽ không ảnh hưởng đến bất kỳ các bối cảnh ngữ cảnh khác. 7 thuộc tính khác tuân theo chính xác đặc tả CORS chính thức (https://www.w3.org/TR/cors/), vì vậy chúng khá tự giải thích.

Liên kết với beta: https://developer.ibm.com/wasdev/blog/2016/01/15/beta-websphere-liberty-and-tools-january/

1

Để mở rộng đến các CORS từ ArthurDM: Các trang tài liệu mà không giải thích đủ cho tôi. Thiết lập của tôi là như sau và tôi chỉ muốn chia sẻ điều đó với bạn:

  • Sử dụng hồ sơ Liberty 8.5.5.9. Vì vậy, việc bổ sung CORS vào hồ sơ tự do không còn trong bản beta nữa.
  • Sử dụng hàng loạt JavaEE và kết nối lô để đặt tất cả dữ liệu trong kho lưu trữ (không có trong bộ nhớ).
  • Tôi muốn sử dụng tính năng batchManagement-1.0 cho phần còn lại của hàng loạt đi kèm với nó.
  • Góc 1.

Cuối cùng, thiết lập CORS sau đã làm các trick:

<cors domain="/ibm/api" 
     allowedOrigins="http://localhost:9080" 
     allowedMethods="GET, POST, PUT, DELETE" 
     allowedHeaders="Accept, Accept-Language, Content-Language, Content-Type" 
     exposeHeaders="Content-Type" 
     allowCredentials="true" 
     maxAge="3600" /> 

Chúc may mắn, và tôi hy vọng nó sẽ giúp.

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