WebBrowser1.Navigate でのReferer 操作


上原  2011-06-07 20:27:05  No: 147333  IP: [192.*.*.*]

WebBrowser1.Navigate(New Uri(html)) に対してのReferer操作を行いたいと思っています、調べたところNavigate2でのサンプルソースなどは見つかりましたがNavigateでしてみるとエラー文がでてしまいます。

↓このようなもの
ie.Navigate2("http://www.google.co.jp/", Headers:="Referer: http://www.bcap.co.jp/hanafusa/hoge.aspx" & vbCrLf)

どのような引数でおこなえるのでしょうか?


環境
win7 or xp
vb2010 or2008

よろしくお願いいたします。

編集 削除
魔界の仮面弁士  2011-06-08 09:59:05  No: 147334  IP: [192.*.*.*]

その構文が使えるのは、System.Windows.Forms.WebBrowser ではなく、
ActiveX コントロール版のアンマネージ WebBrowser (AxWebBrowser)の方です。
http://msdn.microsoft.com/en-us/library/aa752093.aspx
http://msdn.microsoft.com/en-us/library/aa752094.aspx
http://msdn.microsoft.com/en-us/library/aa752133.aspx
http://msdn.microsoft.com/en-us/library/aa752134.aspx


マネージ WebBrowser の Navigate の場合には、
(String, String, Byte(), String)オーバーロードの additionalHeaders 引数か、
http://msdn.microsoft.com/ja-jp/library/ms161355.aspx
(Uri, String, Byte(), String)オーバーロードの additionalHeaders 引数を使います。
http://msdn.microsoft.com/ja-jp/library/ms161356.aspx


Dim url As String = "http://www.confrage.com/php/access/referer/referer.php"
Dim referer As String = "Referer: http://www.confrage.com/php/" & vbCrLf

WebBrowser1.Navigate(url, Nothing, New Byte() {}, referer)

編集 削除
上原  2011-06-08 16:04:43  No: 147335  IP: [192.*.*.*]

魔界の仮面弁士様ありがとうございます、大変勉強になりました。

もう一つ質問なのですが

Dim url As String = "http://www.confrage.com/php/access/referer/referer.php"
Dim referer As String = "Referer: http://www.confrage.com/php/" & vbCrLf

WebBrowser1.Navigate(url, Nothing, New Byte() {}, referer)

から


魔界の仮面弁士様ありがとうございます、大変勉強になりました。

もう一つ質問なのですが

url = "http://www.confrage.com/php/access/referer/referer.php"
referer  = "Referer: http://yahoo.co.jp" & vbCrLf

WebBrowser1.Navigate(url, Nothing, New Byte() {}, referer)

としてもリファラーは初回のものになってしまします、
つどセットしたリファラーにはできないものでしょうか?

編集 削除
魔界の仮面弁士  2011-06-08 17:03:55  No: 147336  IP: [192.*.*.*]

> リファラーは初回のものになってしまします、

同じ URL への GET リクエストなので、前回のキャッシュが使われており、
サーバーへのリクエストが行われていないためです。

アンマネージ版のメソッドにはキャッシュを読まないモードも
用意されているので、それを用いるという手はあります。
http://msdn.microsoft.com/en-us/library/dd565688.aspx

CallByName(WebBrowser1.ActiveXInstance, "Navigate", CallType.Method, _
           url, BrowserNavConstants.navNoReadFromCache, Type.Missing, Type.Missing, referer)

ただし、古いバージョンのIE環境では、この指定が無視されます。
IE 8 や IE9 環境では効くようですけれども。

編集 削除
上原  2011-06-08 17:09:10  No: 147337  IP: [192.*.*.*]

魔界の仮面弁士様さっそくのご回答ありがとうございます、
ということは、一度違うページにいっても・・・キャッシュが残っていれば同じということですかね?キャッシュをクリアすれば改善されるのでしょうか?一度試してみようと思います。

このたびはありがとうございました。

編集 削除