WebBrowser1.Navigate でのReferer 操作


上原  2011-06-08 05:27:05  No: 147333

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 18:59:05  No: 147334

その構文が使えるのは、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-09 01:04:43  No: 147335

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

もう一つ質問なのですが

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-09 02:03:55  No: 147336

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

同じ 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-09 02:09:10  No: 147337

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

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


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加