2013-04-16 35 views
5

Tôi có một máy chủ cầu nối để chạy các dịch vụ web của mình. Gần đây tôi đã phát triển một chương trình để tiêu thụ dịch vụ web và chạy vào vấn đề Access-Control-Allow-Origin.Cách thêm Access-Control-Allow-Origin vào máy chủ jetty

Tôi làm cách nào để thêm Access-Control-Allow-Origin: * vào máy chủ được nhúng cầu nối.

bên dưới là mã webappcontext.

public WebAppContext buildWebAppContext(){ 
    webAppContext = new WebAppContext(); 
    webAppContext.setDescriptor(webAppContext + "/WEB-INF/web.xml"); 
    webAppContext.setResourceBase("."); 
    webAppContext.setContextPath("/posApplication"); 
    webAppContext.setAttribute("webContext", webAppContext); 
    return webAppContext; 
} 

Cảm ơn bạn.

Trả lời

11

Thiết lập org.eclipse.jetty.servlets.CrossOriginFilter trong ứng dụng web của bạn.

Cũ câu hỏi/câu trả lời về chủ đề này: https://stackoverflow.com/a/8454168/775715

Xem Jetty Documentation Hub trên CrossOriginFilter Use:

Quick Start

  1. lấy cho mình một bản sao của jetty-servlets.jar.

  2. Đặt jetty-servlets.jar trong bạn WEB-INF/lib

  3. Thêm tin sau vào tệp WEB-INF/web.xml

<filter> 
    <filter-name>cross-origin</filter-name> 
    <filter-class>org.eclipse.jetty.servlets.CrossOriginFilter</filter-class> 
    <init-param> 
     <param-name>allowedOrigins</param-name> 
     <param-value>*</param-value> 
    </init-param> 
    <init-param> 
     <param-name>allowedMethods</param-name> 
     <param-value>GET,POST,HEAD</param-value> 
    </init-param> 
    <init-param> 
     <param-name>allowedHeaders</param-name> 
     <param-value>X-Requested-With,Content-Type,Accept,Origin</param-value> 
    </init-param> 
</filter> 
<filter-mapping> 
    <filter-name>cross-origin</filter-name> 
    <url-pattern>/*</url-pattern> 
</filter-mapping> 
+0

Lưu ý rằng các ký tự đại diện như "*" không được phép cho tiêu đề. Tôi phải cung cấp một cách rõ ràng danh sách các tiêu đề để nó hoạt động. Xem câu trả lời của killer7 trong câu hỏi bạn đã liên kết. – black666

+0

Khi điều này đã được trả lời, trở lại vào tháng 4 năm 2013, nó là chính xác. Nhiều thứ đã thay đổi kể từ đó. –

+0

@JoakimErdfelt bạn có thể vui lòng liên kết tôi đến một giải pháp đúng không? cái này không có tác dụng với tôi –

1

Cách giải quyết cho điều này CORS vấn đề là sử dụng một phần mở rộng trong trình duyệt chrome/crom. đây là liên kết cho tiện ích.

https://chrome.google.com/webstore/detail/allow-control-allow-origi/nlfbmbojpeacfghkpbjhddihlkkiljbi?utm_source=chrome-app-launcher-info-dialog

Không cần phải thêm bất kỳ tiêu đề trong mã phía máy chủ (mà rõ ràng sẽ làm việc nhưng có thể không phải là một ý tưởng tốt).

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