0

発行サイトのページにアプリ パーツがあります。そのアプリでは、ユーザーが認証されると、JSOM 呼び出しが適切に機能します。匿名モードでは、アプリ パーツを含むページのリロード後にのみ機能します。最初の読み込み中に、次のエラーが発生します。

リソースのロードに失敗しました: サーバーは 403 (FORBIDDEN) のステータスで応答しました http://app-4e3210d8daa297.abc.com/MyList/_vti_bin/client.svc/ProcessQuery

JSOM 呼び出しのエラー ハンドラは、「未定義」のエラー メッセージを返します。

しかし、ページまたは app-part 自体 (javascript コードを使用) をリロードすると、機能します。

ページの最初のロード時にのみ JSOM 呼び出しが禁止されるのはなぜですか? これを解決するにはどうすればよいですか?

4

1 に答える 1

0

これは一時的にこの問題を解決するための簡単な修正ですが、もっと良い方法があると確信しています。

    //error handler of the jsom call that fails
    function onErrorLoadList(data, error, errorMessage) {
        console.log("Could not complete cross-domain call: " + errorMessage);
        // in anonymous mode, for the first load of the app
        // the JSOM calls fail and errorMessage is undefined
        if (typeof errorMessage == 'undefined') {
            // we will reload the app by adding reload=true in the url
            // if it fails again, we won't do it to avoid a loop
            if (!location.href.match(/reload=true/)) {
                console.log("The app reloads.");
                location.href = location.href + "&reload=true";
            }
        }
    }
于 2016-05-23T10:33:26.993 に答える