2012-04-11 122 views
3

我正在使用VS 2010 IDE開發WCF RESTful服務,在研究期間,我們被告知API將部署在網站將託管的相同域中,例如。WCF RESTful服務從網站客戶端腳本跨域訪問

API託管: www.site.com/API/services.svc(其中API是一個虛擬文件夾)

網站託管: www.site.com

由於,相同的API將由我們的網站使用,我們計劃在同一個域中部署客戶端ajax,因此不會出現跨域/源訪問問題。

但是,後來發生的變化是,iPad,iPhone和智能電視應用將使用相同的API,因爲我們計劃將API部署到另一個稱爲www的域中.api.com/services.svc它對所有設備應用程序的響應都很好,但是,由於它是來自客戶端的跨域訪問,因此我們在網站中遇到了問題。搜索結束後,我發現通過在Global.asax文件Application_BeginRequest()中實現以下代碼,可以在API中打破以下跨代域策略的代碼:Firefox & Safari瀏覽器,但不包含IE瀏覽器

HttpContext.Current.Response.AddHeader("Access-Control-Allow-Origin", "*"); 
HttpContext.Current.Response.AddHeader("Access-Control-Allow-Methods", "GET, POST, OPTIONS"); 
HttpContext.Current.Response.AddHeader("Access-Control-Allow-Headers", "x-requested-with"); 
if (HttpContext.Current.Request.HttpMethod.ToUpper() == "OPTIONS") 
{ 
HttpContext.Current.Response.AddHeader("X-DR-Request-Terminated-By", "CrossDomainXhr-OPTIONS"); 
HttpContext.Current.Response.AddHeader("Access-Control-Max-Age", "1728000"); 
HttpContext.Current.Response.End(); 
} 

請幫我解決這個問題...

在此先感謝...

Sathish所在

回答

0

據我所知,IE不允許有 「*」

HttpContext.Current.Response.AddHeader("Access-Control-Allow-Origin", "*"); 

嘗試指定域。你也可以參考這裏:
Access-Control-Origin in IE

+0

非常感謝您的回答,並提供非常有用的幫助,請指導我如何爲多個域允許訪問控制 - 允許來源,我嘗試用(,)分隔域但它不工作 – 2012-04-21 09:52:21