2014-02-28 64 views
0
var strBaseUrl = "http://service.mydomain.com/MyserviceHost/stage/"; 
    function Login() { 
     debugger; 
     var LoginInfo = JSON.stringify({ "strAccountName": "#####", "strPassword": "######", "strDeviceId": "################" }); 
     var strUriGet = strBaseUrl + "OneviewClient.svc/Login"; 

     $.ajax({ 
      type: "POST", 
      url: strUriGet, 
      data: LoginInfo, 
      contentType: "application/json; charset=utf-8", 
      dataType: "json", 
      async: false, 
      processData: true, 
      success: function (data, status, jqXHR) { 
       debugger; 
       //alert("success..." + data); 
       console.log("success..." + jqXHR.responseText); 
       $("#labelToken").text(data.loginResponse.strToken); 
      }, 
      error: function (xhr, status, exception) { 
       debugger; 
       console.log(xhr.responseJSON); 
       console.log(xhr.responseText); 
      } 
     }); 
    } 

以上ajax調用與http://service.mydomain.com/MyserviceHost/stage/ 我已經寫了重寫模塊WCF服務的web.config重寫所有的HTTP reuqest到https製造。 當我試圖在瀏覽器地址中調用http鏈接時,它簡單地重定向到https,但在ajax中稱它不會(它引發網絡錯誤),有沒有我錯過的東西?URL重寫不工作的Ajax請求從http WCF服務到https

<rewrite> 
    <rules> 
    <rule name="HTTP to HTTPS redirect" stopProcessing="true"> 
     <match url="(.*)" /> 
     <conditions> 
     <add input="{HTTPS}" matchType="Pattern" pattern="off" ignoreCase="true" negate="false" /> 
     </conditions> 
     <action type="Redirect" url="https://{HTTP_HOST}/MyserviceHost/stage/{R:1}" redirectType="SeeOther" /> 
    </rule> 
    </rules> 
</rewrite> 

回答

1

該規則對我來說是正確的。但是我已經看到由於IIS安裝問題,URL重寫不能在少數情況下工作。要確保您沒有此問題,請先檢查當您在IIS管理器中單擊網站時是否可以看到URL重寫圖標。你應該能夠雙擊它並看到你的上述規則沒有任何問題。爲了理智,我會添加非常簡單的規則(例如,將xyz.html重定向到abc.html)並查看它是否正常工作。如果您沒有看到URL Rewrite Icon,但是您已經安裝過它,則需要卸載並重新安裝,然後重新打開IIS管理器。

如果上面的簡單測試成功並確實安裝了URL重寫,那麼您應該使用Chrome開發人員工具來查看是否使用正確的URL發送了AJAX請求並查看服務器響應。

如果你可以驗證服務器是否確實沒有響應重定向,那麼你最後的手段是啓用Failed Request Tracing。這將顯示URL Rewrite是否在調用鏈中被調用,如果被調用,那麼它將顯示它獲得的輸入URL和正則表達式的結果。這在幾乎所有我合作過的案例中都指出了根本原因。

+0

我從chrome發現第一個請求是作爲Cors Preflight發送的,因爲wcf使用安全模式傳輸進行配置,因此它被中止。預檢後的實際請求未被髮送。 – kbpanchal