2013-09-27 40 views
16

Tôi nhìn vào tiêu đề mà sắp, nhưng không có IP dường như có mặt ở đó:Làm thế nào để có được địa chỉ IP đến trong khuôn khổ Spray

HttpRequest(GET,http://127.0.0.1:8080/track/check,List(Accept-Language: uk-UA, 
uk, ru, en-US, en, Encoding: gzip, deflate, sdch, User-Agent: Mozilla/5.0 
(Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/29 
Safari/537.36, Accept: text/html, application/xhtml+xml, application/xml;q=0.9, 
*/*;q=0.8, Connection: keep-alive, Host: 127.0.0.1:8080),EmptyEntity,HTTP/1.1) 

Đây là yêu cầu tôi đã làm từ trình duyệt. Về cơ bản tôi đang tìm kiếm:

path("check") { 
     get { 
     implicit request => { 
      val a = 5 
     } 
     } 
    } ~ 

Ở đây đối tượng yêu cầu không có bất kỳ thông tin nào về địa chỉ IP. Bất kỳ trợ giúp là rất đánh giá cao. cảm ơn.

Trả lời

15

Nếu bạn đang sử dụng định tuyến phun, sau đó là một chỉ thị cho giải nén ip client gọi clientIP =) Để sử dụng nó chỉ cần viết:

(path("somepath") & get) { 
    clientIP { ip => 
    complete(s"ip is $ip") 
    } 
} 

hơn thì đơn giản, nhưng bạn cần vẫn cần thêm rõ ràng cấu hình để nhận IP từ yêu cầu. Và một bình luận nhỏ, có lẽ tôi đã không nhận được một cái gì đó nhưng trong phun không có implicit request. Trên thực tế yêu cầu đến thấm qua cấu trúc định tuyến của bạn, nếu bạn có một cái nhìn vào thư viện định tuyến bạn sẽ thấy rằng tuyến đường chỉ là một bí danh: type Route = RequestContext => Unit. Vì vậy, nếu bạn cần truy cập vào ngữ cảnh tại một số thời điểm chỉ cần viết:

Nhưng hãy nhớ về phần tuyến tĩnh và phần động.

+2

Đó là một cách hay, tuy nhiên câu trả lời của tôi dưới đây cũng rất phù hợp. Đó thực sự là vấn đề chính đối với tôi. –

28

Sự cố đã được cấu hình, điều này không được ghi nhận rõ. Thêm phần này:

# spray-can config 
spray.can { 
    server { 
    remote-address-header = on 
    } 
} 

buộc phun để thêm tiêu đề IP từ xa vào tiêu đề chính. Tiêu đề địa chỉ sẽ có tên Địa chỉ từ xa.

+2

Có, bạn nói đúng, hiện tại nó không có giấy tờ. Một khi chúng tôi nhận được tài liệu hướng dẫn clientIp nó sẽ chứa chính xác tài liệu đó. Xin lỗi, bạn phải tìm ra con đường khó khăn. – jrudolph

+0

@jrudolph Nó có hoạt động với Spray Servlet không? – expert

+0

@jrudolph Vẫn còn thiếu. http://spray.io/documentation/1.1.3/spray-routing/misc-directives/clientIP/#description 2 năm, không có áp lực. – flavian

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