兩件事情來檢查(不知道你的服務器端語言/技術是什麼):
你包括OPTIONS
作爲您的Access-Control-Allow-Methods
的有效方法?示例:
Access-Control-Allow-Methods: GET, OPTIONS
您的請求發送的自定義標頭是否被允許返回瀏覽器? 例子:
Access-Control-Allow-Headers: X-PINGOTHER
遠程服務器有任何安全的,符合標準的瀏覽器之前返回這兩個(和最絕的第二個)(即不是舊版本的IE),將允許非原產地迴應通過。
所以,如果你想在HTTP服務器級別來實現這一點,讓您的網絡服務的便攜式,你可以嘗試以下操作:
我們假設你的web服務的URL是http://example.org/service
並且路徑要服務/srv/www/service
如果您正在運行Apache 2.0,則追加標頭的語法爲add
,在2.2上使用set
。
所以,你會修改/srv/www/service/.htaccess
有:
Header set Access-Control-Allow-Methods "GET, OPTIONS"
Header set Access-Control-Allow-Headers "X-MY_CUSTOM_HEADER1,X-MY_CUSTOM_HEADER2"
Header set Access-Control-Allow-Origin "*"
當然,mod_headers
Apache模塊必須對上述工作。另外,將允許來源設置爲通配符是有風險的,並且如果您發送標頭Access-Control-Allow-Credentials: true
(在這種情況下不能使用通配符),它實際上會導致請求失敗。此外,使用SetEnvIf
mod的Apache,您可以對htaccess文件進行微調,以便在適當時僅返回標頭,而不是對該目錄的所有請求。
根據你的例子,我會更關心IE *是否允許請求。 – Anthony 2012-04-25 11:07:53
我必須通過Chrome瀏覽器或其他瀏覽器才能使用這些工具。因爲最後我必須使用智能手機瀏覽器才能完成任務。 – Surya 2012-04-25 11:23:16
在這種情況下,您應該確認手機瀏覽器支持'CORS'。這裏有一個很好的列表:http://caniuse.com/cors – Anthony 2012-04-25 11:48:41