EO.WebBrowser设置referer C#

时间:2015-04-20 07:41:26

标签: javascript c# .net webbrowser-control awesomium

试图找到一种在EO.WebBrowser中设置引用的方法。 我看到User-Agent可以使用:webView1.CustomUserAgent进行更改,但看起来没有针对referer的方法。有没有其他方法可以通过javascript或其他方式使用它?

我可以“抓住”beforesendheaders事件,使用:webView1.BeforeSendHeaders += new EO.WebBrowser.RequestEventHandler(webView1_BeforeSendHeaders);,但没有那么多帮助。

我正在开发一个项目,我开始使用awesomium,但是......看起来有些网站没有加载,只是显示一个空白屏幕。我已经设法在awesomium中更改了referer和user agent,但我真的需要两者继续前进。

任何建议都表示赞赏。

1 个答案:

答案 0 :(得分:0)

看起来我自己发现了,使用javascript。 这是代码:

public partial class Form1 : Form
{
    private const string JS_referer_function = "function navigateToUrl(url) {var f = document.createElement(\"FORM\"); f.action = url; var indexQM = url.indexOf(\"?\"); if (indexQM>=0) { var params = url.substring(indexQM+1).split(\"&\"); for (var i=0; i<params.length; i++) { var keyValuePair = params[i].split(\"=\"); var input = document.createElement(\"INPUT\"); input.type=\"hidden\"; input.name  = keyValuePair[0]; input.value = keyValuePair[1]; f.appendChild(input); } } document.body.appendChild(f); f.submit(); }";
    public Form1()
    {
        InitializeComponent();
    }

    private void button1_Click(object sender, EventArgs e)
    {
        webView1.LoadUrlAndWait("http://referer.com");
        webView1.EvalScript(JS_referer_function);
        webView1.EvalScript("navigateToUrl(\"http://192.168.0.108/referer\");");
    }
}

它基本上首先加载http://referer.com,并使用javascript,使用引用http://192.168.0.108/referer转到http://referer.com