Wednesday, April 29, 2009

[Flex]Channel.Security.Error / Security error accessing url 解法

最近在用Flex call Web Service,結果發現呼叫遠端的Web Service會有問題。
faultCode:Channel.Security.Error faultString:'Security error accessing url'
faultDetail:'Unable to load WSDL. If currently online, please verify the URI and/or format of the WSDL '

查了一下才知道是新版FlashFlayer增強安全性後產生的問題,Adobe有解法在這

其實只要在被呼叫的Web Service機器的網頁根目錄上,丟一個檔叫做crossdomain.xml,內容如下
<?xml version="1.0"?>
<!DOCTYPE cross-domain-policy SYSTEM "http://www.macromedia.com/xml/dtds/cross-domain-policy.dtd">
<cross-domain-policy>
<allow-access-from domain="*" to-ports="80"/>
<allow-http-request-headers-from domain="*" headers="SOAPAction"/>
</cross-domain-policy>

這樣就可以解了,要注意的是"*"記得要指定Flash這端的domain,星號是所有都可以連。

5 comments:

  1. 你好:
    想請教一個問題。我在我的server上面放上crossdomain.xml這個檔案,但是我還是無法讀取到圖片,想請問這個是甚麼原因呢?

    ReplyDelete
  2. 請問你是用什麼方式去讀圖片的 ?

    ReplyDelete
  3. 我有一個功能是按下按鈕之後,用滑鼠點在canvas上面會出現圖片,但是因為安全性的問題所以我export之後看不到那些圖片。
    而之前有問過別人說可以放進crossdomain.xml這個檔案,但是還是沒有看到圖片。

    ReplyDelete
  4. 沒遇過這問題,不過我用猜的
    1.該瀏覽器支援canvas ?
    2.放crossdomain.xml的地方對 ?

    希望能幫上忙:)

    ReplyDelete