2009-09-25 27 views
2

我有一個WCF Web服務託管在IIS中。它使用webHttpBinding。這些方法上有WebInvoke屬性,以便它們可以訪問REST風格。我可以成功地使用它們,如下所示: http://mydomain.com/MyService.svc/some/rest/style/thing 並POST到該服務的參數。

現在我想在非標準端口7777我正確配置IIS此更改爲HTTPS,拿到了證書和一切。我可以通過https://mydomain.com:7777訪問html頁面。 我添加了一個修改的WebHttpBinding添加一個安全節點像這樣:

<security mode="Transport"> 
    <transport clientCredentialType="None" proxyCredentialType="None" realm=""/> 
</security> 

我也改變了我的行爲的servicemetadata節點和刪除httpGetEnabled =「真」,並添加httpsGetEnabled =「真」

我可以訪問https://mydomain.com:7777/MyService.svc並獲得信息的屏幕。

我可以使用HTTP GET訪問https://mydomain.com:7777/MyService.svc/some/rest/style/thing,我也得到了「不允許的方法」的消息。

,但如果我試圖用POST訪問https://mydomain.com:7777/MyService.svc/some/rest/style/thing我得到一個403禁止


更新一些更多的信息

我縮小問題

我使用jQuery和通過$ .post(「http://mydomain.com/ .....」,「data」,callback,「json」)訪問webservice ..工作 現在我在做$ .post(「https://mydomain.com:7777/ .....」。 「數據」,回調,「JSON」)..這給了我一個403。 ..using螢火我看到的,而不是發送POST請求,它發送選項initially..and這就是正在給403

這可能是一個jQuery的問題

回答

0

你需要運行httpcfg得到IIS在非標準端口上偵聽SSL流量。

+1

其實我有IIS監聽就好..結果是更多的jquery問題..爲什麼它發送OPTIONS動詞,而不是一個POST動詞做跨域POST時 – puffpio 2009-09-27 20:07:56

1

JQuery $ .ajax,$ .get,$ .post調用不允許跨域調用。當你做一個,它發送OPTIONS動詞,而不是POST動詞,儘管請求方法是POST。

其他解決方法可能是創建另一個子域,指向要實際調用的URL的IP地址。

0

Puffpio:

請檢查以確保您追加了「callback =?」參數給你的請求URI。然後,您應該在請求標題中看到GET謂詞。

從jQuery的文檔page

回調的形式爲 「example.com?callback=?」。 jQuery 自動替換'?'與 隨機方法名稱不衝突 與全局範圍。您沒有 可以自己指定方法名稱。

希望這有助於

邁克爾·伊瓦拉

0

如果您使用的是Mozilla火狐狸作爲一個瀏覽器那麼預檢該請求,併發送帶有選項動詞的請求,當服務器返回200 OK狀態,然後用POST動詞請求實際數據。

CROSS域問題。

Intekhab

0

我發現我有同樣的問題,即Ajax調用使用jQuery的.load功能正在返回403錯誤。我必須進入IIS管理器的默認網站屬性中的主目錄,然後選擇配置,然後編輯.cgi擴展的屬性,以便它包含OPTION動詞。發現你的問題和隨後的評論幫助我迅速解決了這個問題。

相關問題