2010-08-23 32 views
6

Tôi có dịch vụ WCF mà tôi cần chạy trên SSL, tôi gọi nó từ một trang web (sử dụng jQuery) có thể hoặc không thể là trang bảo mật. Vấn đề là, nếu tôi thực hiện cuộc gọi từ một trang web an toàn trên trang web của tôi, cuộc gọi chạy chính xác như tôi mong đợi ... tuy nhiên, nếu tôi thực hiện cuộc gọi từ trang không an toàn trên trang web của tôi, đến dịch vụ web bảo mật (sử dụng "https: //";)) nó trả về dữ liệu null (qua Firebug). Bất cứ điều gì tôi đang mất tích? Điều này thậm chí có thể?WCF qua SSL từ trang không an toàn

Dưới đây là cấu hình của dịch vụ tôi đang gọi (Tôi hạnh phúc hơn để cung cấp những thứ hơn nếu cần thiết):

<behaviors> 
    <endpointBehaviors> 
    <behavior name="AspNetAjaxBehavior"> 
     <webHttp/> 
    </behavior> 
    </endpointBehaviors> 
</behaviors> 
<services> 
    <service name="ClientServices.Membership" behaviorConfiguration="ServiceGatewayBehavior"> 
    <endpoint address="" behaviorConfiguration="AspNetAjaxBehavior" bindingConfiguration="SecureBinding" 
    binding="webHttpBinding" contract="ClientServices.Membership" /> 
    </service> 
</services> 
<bindings> 
    <webHttpBinding> 
    <binding name="SecureBinding"> 
     <security mode="Transport"/> 
    </binding> 
    </webHttpBinding> 
</bindings> 

Đây là mã mà các cuộc gọi dịch vụ:

$.ajax({ 
      url: serviceUrl, 
      type: "POST", 
      contentType: "application/json; charset=utf-8", 
      dataType: "json", 
      data: '{"review":{"Username":"' + username + '"}}', 
      success: function (data) { 
       $.log(data); 
      }, 
      error: function (a, b, c) { 
       $.log(b); 
      }, 
      cache: false 
     }); 

CẬP NHẬT

Nếu tôi thay đổi phương pháp gọi phục vụ "GET" và gọi nó là trực tiếp qua SSL nó hoạt động tốt và kết quả đầu ra jSo n mà tôi mong đợi. Nó chỉ nằm bên trong trang không an toàn nơi sự cố vẫn tiếp diễn.

+0

Bạn có thể đăng mã jQuery của bạn để gọi dịch vụ không? Bạn đang nhận được một 200 trở lại từ dịch vụ của bạn (với dữ liệu null trả lại) hoặc bạn đang nhận được một lỗi trở lại? –

+0

Tôi đã thêm mã gọi cho bạn. Mã này không có vấn đề gì đang chạy trong các tình huống khác, chỉ khi trang không an toàn và nó đang gọi dịch vụ bảo mật. –

+0

Và có, nhận lại 200 –

Trả lời

0

Giả sử cả trang web và dịch vụ đều ở yourdomain.com, thì suy nghĩ đầu tiên của tôi là khi trên trang không an toàn, trình duyệt của bạn chưa đính kèm cookie cho miền trang web và khi nó gọi dịch vụ, nó không được xác thực.

Bạn đã sử dụng Fiddler để xem dữ liệu tiêu đề HTTP thô và quan trọng hơn, điều gì khác trong dữ liệu này khi trên trang hoạt động và không hoạt động?

Luke

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