2013-10-13 48 views
0

我正在編寫一個網站,該網站使用了一個dotnet休息Web服務。我完全控制這兩個項目。網絡錯誤405:從瀏覽器發佈到Localhost WCF REST Web服務

就在今天,我實現了一個後期Web服務。當我和Fiddler一起發佈時,它就可以工作。今天早上我從網站上跑了一些測試,一切似乎都沒問題。我處理另一個問題(使用提琴手獲得帖子內容),然後我從瀏覽器返回發佈,但現在整個網站展示CORS行爲 - 空白返回等。此外,剛剛實施的帖子剛開始返回405方法不允許錯誤

"NetworkError: 405 Method Not Allowed - http://localhost:50122/MyService/ListMarkers" 

下面是網站代碼:

function postAjax(){ 
    var markers = 
    { "listmarkers": 
    [{ "position": "128.3657142857143", "markerPosition": "7" }, 
        { "position": "235.1944023323615", "markerPosition": "19" }, 
        { "position": "42.5978231292517", "markerPosition": "-3" }] 
    }; 

    $.ajax({ 
     type: "POST", 
     url: window.url + "/PocShimService.svc/ListMarkers", 
     // The key needs to match your method's input parameter (case-sensitive). 
     data: JSON.stringify(markers), 
     //data: markers, 
     contentType: "application/json; charset=utf-8", 
     dataType: "json", 
     success: function(data){alert(data);}, 
     failure: function(errMsg) { 
      alert(errMsg); 
     } 
    }); 

} 

這是具有訪問控制做服務器的配置:

<httpProtocol> 
    <customHeaders> 
    <add name="Access-Control-Allow-Origin" value="*" /> 
    <add name="Access-Control-Allow-Headers" value="Content-Type" /> 
    </customHeaders> 
</httpProtocol> 

任何想法?建議?

+0

後您的服務代碼... – Lev

回答

1

如果您的域名同爲WCF和客戶端應用程序,那麼你必須嘗試window.location.origin而不是window.url。您的Ajax請求應該看起來像

$.ajax({ 
    type: "POST", 
    url: window.location.origin + "/PocShimService.svc/ListMarkers", 
    // The key needs to match your method's input parameter (case-sensitive). 
    data: JSON.stringify(markers), 
    //data: markers, 
    contentType: "application/json; charset=utf-8", 
    dataType: "json", 
    success: function(data){alert(data);}, 
    failure: function(errMsg) { 
     alert(errMsg); 
    } 
}); 
+0

這沒有工作,我需要的網站移動到相同的URL /端口的Web服務。我想避免將網站放在與我的網絡服務相同的位置。有什麼建議? –

+0

在這種情況下,您必須在服務器端調用WCF,因爲跨瀏覽器安全問題 –