2012-06-18 74 views
0

我想通過http調用一個使用javascript的跨域WCF服務。調用WCF跨域的問題

我已經添加了訪問控制允許來源頭操作我想,像這樣打電話:然而,當我使用POST jquery.ajax

WebOperationContext.Current.OutgoingResponse.Headers.Add("Access-Control-Allow-Origin", "*"); 

我得到:

Origin http://server/ is not allowed by Access-Control-Allow-Origin. 

更糟糕的是它甚至從我的本地機器發生:

XMLHttpRequest cannot load http://localhost:8201/wcfservice. Origin http://localhost/ is not allowed by Access-Control-Allow-Origin. (observed in Chrome) 

我在做一些根本性錯誤?

回答

1

你對GET請求(在支持CORS的瀏覽器中)做的很好 - 將請求發送到服務,如果服務具有訪問控制 - 允許,瀏覽器將讓它回到應用程序-Origin標題)。

對於「不安全」請求(即那些可能會導致服務產生副作用的請求,例如POST,PUT和DELETE),瀏覽器首先發送一個預檢請求,一個OPTIONS請求「詢問」服務是否可以接受跨域請求。由於您的操作僅響應POST請求,因此它不會響應該請求,並且瀏覽器會阻止該請求。

我寫了一篇關於在WCF中實現CORS支持的方法的文章,你可以在http://blogs.msdn.com/b/carlosfigueira/archive/2012/05/15/implementing-cors-support-in-wcf.aspx找到它。基本上,除了「正常」請求之外,您還需要處理OPTIONS請求。

+0

感謝@carlosfiguera,我發現了另一種獲取我需要的數據的方式,但您的解決方案是合法的 – dangerdave