flexおよび.net 2.0 Webサービス、他のドメインからのアクセスを許可する方法
-
03-07-2019 - |
質問
アプリケーションサーバータイプをnoneに設定して、flex builderでプロジェクトを作成しました。
デバッグ時に、サイト上のローカルマシンthatsからWebサービスにアクセスできます http ://mysite.com/ws/ws.aspx?wsdl
フレックスアプリをmysite.com/myapp.htmlにアップロードすると、うまくいきます。
しかし、myapp.mysite.com / myapp.htmlにアップロードすると、Webサービスにアクセスできません。
誰が私に欠けているものを知っていますか?
ありがとう
PS WSはVB.netで作成され、アプリケーションサーバータイプを.netに設定してflexプロジェクトを作成すると、ローカルマシンからWSにアクセスしません
これは私のcrossdomain.xmlファイルです
<?xml version="1.0"?>
<!DOCTYPE cross-domain-policy SYSTEM "http://www.adobe.com/xml/dtds/cross-domain-policy.dtd">
<cross-domain-policy>
<site-control permitted-cross-domain-policies="all"/>
<allow-access-from domain="*"/>
<allow-http-request-headers-from domain="*" headers="*"/>
</cross-domain-policy>
**私の推測では、これはflexの問題ではなく、.netのセキュリティ機能です...設定方法がわかりません。
.NETは、アプリが自身のドメイン外でそれを使用することを許可しません。**
解決
デフォルトでは、Flexはリモートホスト上のWebサービスへのアクセスを許可しません。これはFlexのセキュリティ機能です。 Flexアプリは myapp.mysite.com
にデプロイされているため、 mysite.com
のサービスとは異なるホストの下にあります。
crossdomain.xml
をmysite.comに追加して、サービスが異なるドメインからのアクセスを許可するかどうかをFlexが確認できます。 crossdomain.xml
ファイルは、ドメインのWebルート( mysite.com/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="*" />
<allow-http-request-headers-from domain="*" headers="*"/>
</cross-domain-policy>
他のヒント
Tamper Dataで行われているリクエストをチェックしてみてください(Firefoxの拡張機能)。アプリがcrossdomain.xmlファイルを見つけるように確認します。パスがオフの場合、それが問題です。