2

Dynamics CRM 2011 内で Google の GeoCoding API を使用しようとしていますが、問題が発生しています。次の JavaScript 関数を作成しました。

function geocodeXML()
{
    var mDataPath = "http://maps.googleapis.com/maps/api/geocode/xml?address=WV1+1UL&sensor=false";
    xmlDoc=new ActiveXObject("Microsoft.XMLDOM");
    xmlDoc.async=false;
    alert(1);
    xmlDoc.load(mDataPath);
    alert(2);
    var theLat = xmlDoc.getElementsByTagName("lat")[0].childNodes[0].nodeValue;
    var theLng = xmlDoc.getElementsByTagName("lng")[0].childNodes[0].nodeValue;
    alert(theLat + ", " + theLng);
}

これを自分のコンピューターでローカルに実行しましたが、問題なく動作します。コードが実行され、緯度と経度を含むアラート ボックスが表示されます。ただし、CRM に含めるとすぐに実行を拒否します。上記のように警告ボックスを追加しましたが、2 つの警告の間の行 (xmlDoc.load(mDataPath);) が問題を引き起こしています。「1」が入った警告ボックスが表示され、それ以外は何も表示されません。CRM関数にコードを含めようとしましたが(何らかの理由で「アクセスが拒否されました」というエラーが表示されます)、HTMLでラップしてiframeとして含めようとしました。

この API が「ステータス」というタグを返し、「OK」、「ZERO_RESULTS」、「OVER_QUERY_LIMIT」、「INVALID_REQUEST」などの応答を返すことがわかったので、クォータやリクエストの構文の問題ではないことがわかりました- そのアドレスのサーバーから API に到達できないかのようです。私が言ったように、コードをローカルで実行すると問題なく動作し、API から (「OK」のステータスで) 応答を受け取りますが、CRM に入るとすぐに何も返されません。

私はこれを引き起こしている可能性があることについて本当に途方に暮れており、提供できる助けをいただければ幸いです.

ありがとう。

4

1 に答える 1

0

スクリプトからクロスサイト呼び出しを行おうとしているため、これを機能させるにはブラウザーの設定を変更する必要があると思います。

IE の [セキュリティ設定] に移動します。[その他] から [ドメイン間でデータ ソースにアクセスする] を選択し、有効にします。スクリプトから「XSS フィルターを有効にする」に移動し、無効にします。あまり最適ではありませんが、うまくいくと思います。少なくとも、クロスサイト スクリプティングの問題であることを確認してください。

これを IFRAME に配置する場合 (少なくともテストする価値はあります)、IFRAME セットアップでクロス サイト スクリプティングを有効にしてください。

于 2012-11-30T04:50:55.020 に答える