PhantomJSのlocalToRemoteUrlAccessEnabled

2013-06-23T00:00:00+00:00 JavaScript

さっき知ったのですが、phantomsjsのオプションでlocalToRemoteUrlAccessEnabledをtrueにするとクロスドメイン間の通信をXMLHttpRequestとかでも出来るらしいとの事

describe("...", function() {
  it("...", function(done) {
    var xhr = new XMLHttpRequest();
    xhr.open("GET", "http://192.168.1.101:3000", true);
    xhr.setRequestHeader("Accept", "application/json");
    xhr.onload = function() {
      expect(this.status).to.be.equal(200);
      expect(xhr.getResponseHeader("Content-Type")).to.match(/^application/json/);

      var response = JSON.parse(this.response);
      expect(response).to.be.ok;

      done();
    };
    xhr.onerror = function() {
      done(new Error());
    };
    xhr.send(null);
  });
});

的なのをmocha+chaiで書いて、mocha-phantomjsで実行する際に

mocha-phantomjs -s localToRemoteUrlAccessEnabled=true -t 5000 runner.html

的な感じとかでオプションで有効にしてしまえばクロスドメイン問題があっても通信できちゃうっぽい。無論、このオプションを指定しなかった場合はテスト通らないし、ブラウザアクセスでのテストも失敗してしまうっていうオチがある

つうかこういうテスト手法っていうのはあんまメリットが無いと思う。まぁあくまで「クロスドメイン解決する策はあるよ」的なネタくらいにしかならなそう

とりまぁmocha-phantomjsを使う前提でクロスドメイン通信を出来るようにしたいならこの手を使えば出来なくも無いって事で

Laravel使ってみた (6) - Request & Input - Laravel使ってみた (5) - サブドメインルーティング -