force.com Sitesでは非SSLにおいて独自ドメインを設定できますが、SSLにおいては独自ドメインを適用できません。

force.com Sitesはポータル系のログイン画面やフォーム画面等で利用されることが多く

企業によっては「ドメインにforce.comとか入ってるのはダメ!」とか言われちゃったりします。

 

これ、リバースプロキシで出来るんじゃね?ということでちょっとやってみることに。

 

方法は簡単で、適当なWebサーバを用意してリバースプロキシの設定をするだけ。

以下はnginxの設定例

 

あとは設定したドメインにアクセスするだけ!

今回試したVFページ+Apexはこんな感じ

 

 

初期表示

sites-rp-init

うん、うまく表示されてます。JSエラーとかネットワークエラーも無し。

Sitesドメインと全く同じ表示になってます。

 

メソッド呼び出し

apex:commandButtonでメソッド呼び出してみます。

sites-rp-send

いい感じ。apex:commandButton+reRenderでajaxもOKでした。

 

JavaScript Remotingしてみます。

sites-rp-sendRA

 

これもOK。

 

じゃ、ログインしてみますか!

sites-rp-login

 

ダメでした。orz

 

POST先は独自ドメイン→Sitesドメインとフォワーディングしてくれてるんだけど

Site.loginはSitesのドメインのfrontdoor.jspが返却されるので

発行されるCookieはSitesドメインに対してなので楽勝でダメでした。そりゃそうだよねー。

 

っていうことで、ポータルへのログイン以外はなんとか機能しそうな感じです。

もちろん、絶対パスで指定しているようなajaxとかがあったら一発でアウトです。

ここらへんはSalesforceの仕様で簡単に変わるので、良い子は真似しないように!

 

ちなみに、Sitesのポータルへの接続を切るとこんな感じにCSSもちゃんと取ってこれてる様子がわかります。

sites-rp-header