1

大学Bは、内部プロキシを介してアクセスするWebサイトAのサブスクリプションを持っています。これにより、プロキシを介したリダイレクトに対応するためにすべてのページのURLが変更されます。

たとえば、WebサイトAのAbout usページは、通常、次のようになります。

website-a.com/about/us

大学Bのプロキシ接続を介してページを表示すると、そのリンクは次のようになります。

website-a.proxy-b.com/about/us

書き換えはプロキシ上で行われ、WebサイトAはそれを制御できません。

これは決して珍しいことではないので、私が見ている問題が簡単な修正であることを願っています。

ウェブサイトAはGoogleカスタム検索エンジンを使用しています...プロキシがURLの書き換えを行った後に検索が実行され、動的検索結果は変更されていないURLで返されます...したがって、プロキシユーザーがURLをフォローすると、それらは当社のサイトに返されます直接、そして彼らがプロキシの下で持っていたであろうアクセスを失います。

(簡単にするために、私はWebサイトAによって実装されるソリューションを探しており、プロキシBは、大学側でこのルックアップを実行するために何かを変更できる人によって管理されていないと仮定してください)

結果がjavascriptを使用してグーグルから返された後にURLを書き直すことを検討しています...しかし、コードを見ると、それに関するいくつかの深刻な問題が予想されます。

誰かがこれを回避することができましたか、それともターゲットURLをその場で書き直す簡単なCSEトリックがありますか?

4

1 に答える 1

1

解決策を見つけました:

    function fixProxyLinks(){
        proxy_rex = new RegExp( document.location.host, "gi");
        orig_rex = new RegExp( "/www.mysite.com/", "gi");

        //Check if current server is DIFFERENT from bg.com
        if( document.location.host.search( orig_rex ) == -1 ){
            $('.gsc-results a').each( function(){
                // Find all the fresh new search results and correct them for the sake of the Proxy

                if( this.href.search( proxy_rex ) == -1 &&  this.href.search( bg_rex ) >= 0 ){
                    this.href = this.href.replace( orig_rex, '/'+document.location.host+'/' );
                    $(this).attr("data-cturl", this.href);
                    $(this).attr("data-ctorig", this.href);

                }
            });
        }
    }

次に、CSEオブジェクトを構築している場所にこれを貼り付けます。 customSearchControl.setSearchCompleteCallback(this, fixProxyLinks);

注:data -cturl属性とdata-ctorig属性について
: CSE機能の一部は、追跡のためにgoogleを介してリダイレクトするURLを書き換えることです。data-cturlは、クリック時にhrefを書き換えるURLです。残念ながら、Googleリダイレクトを完全に置き換えて、リダイレクトターゲットを同じプロキシURLにする必要があります。そうしないと、Googleがリダイレクトされていることに気づき、警告を表示します。ユーザーがクリックすると、CSEはhrefをdata-ctorigに設定された値に書き戻すので、明らかにその値も一致させる必要があります。

于 2012-07-25T14:28:46.273 に答える