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

这可能是因为运行时根据用户代理标头确定您的浏览器功能。尝试像这样(或类似地)将其关闭以尝试是否有帮助:

  // 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 回答
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 回答