3

CasperJS によって送信される HTTP ヘッダーには次が含まれます。

...
 - User-Agent: Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/534.34 (KHTML, like Gecko) CasperJS/1.0.2+Phantomjs/1.8.2 Safari/534.34
...

応答にSetCookie値が含まれていません!

ユーザー エージェントを手動で変更すると、次のようになります。

PageSettings: {
        userAgent: "User-Agent: Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22"
    }

すべて正常に動作します。ASP.Net MVC を使用しています。

サーバー側でどのように修正しますか?

4

2 に答える 2

1

ここで解決策を見つけました: https://stackoverflow.com/a/4816391/1010404

generic.browser を App_Browsers フォルダーに入れました。ファイルに含まれるもの:

<browsers>
  <browser refID="Default">
    <capabilities>
      <capability name="cookies" value="true" />
    </capabilities>
  </browser>
</browsers>

そして、すべて正常に動作します。

于 2013-03-05T14:12:31.133 に答える
1

これはおそらく、ランタイムがユーザー エージェント ヘッダーに基づいてブラウザーの機能を決定するためです。次のように (または同様に) オフにしてみて、役立つかどうか試してください。

  // Global.asax.cs
  void Application_OnBeginRequest( object sender, EventArgs e )
  {
         HttpApplication app = ( HttpApplication )sender;
         HttpContext ctx = app.Context;

         ...
         if (
              ctx.Request != null &&
             !string.IsNullOrEmpty( ctx.Request.UserAgent ) &&
              ctx.Request.UserAgent.Contains( "CasperJS" )
             )
             ctx.Request.Browser.Adapters.Clear();
         ..
  }     

上記のスニペットは必ずしも良いアイデアではありません - 一部のブラウザーではレンダリング アダプターが完全に削除されますが (これはおそらく良くない可能性があります!)、より凝ったものを作成するための良い出発点になるはずです。

これがお役に立てば幸いです。スニペットのレンダリングの問題を解決できました。また、Cookie の問題にも役立つことを願っています。

于 2013-03-05T13:51:24.670 に答える