0

リダイレクトされる URL (HTTP) があります。

これは、パラメーターを含む URL の末尾です。

/c.html?ufl=c&rtr=on&s=x9w5pl,33gz,2cw,75vq,lelf,gwtv,jxou&RESNET_CODE=FIE&OFFERCODE=H38FR10

Chrome を使用してこの URL を取得すると、元の URL は次のように終わる URL (HTTPS) にリダイレクトされます。

/cgi-bin/LANSAWEB?procfun+rn+Resnet+FIE+funcparms+UP(A2560):;H38FR10;?/#

ただし、IE を使用すると (バージョン 8 でテストしています)、最後のパラメーターが削除され、URL (HTTPS) は次のようになります。

/cgi-bin/LANSAWEB?procfun+rn+Resnet+FIE+funcparms+UP(A2560):

フィドラーを使用して、Chrome と IE の両方が同じ Get 要求を投稿していることを確認しました (上記のように)。

/c.html?ufl=c&rtr=on&s=x9w5pl,33gz,2cw,75vq,lelf,gwtv,jxou&RESNET_CODE=FIE&OFFERCODE=H38FR10

;H38FR10;?/#IE を使用すると、最後のパラメーターが切り捨てられるのはなぜですか?

クロムがリダイレクトされるURLを取得してIEに配置すると、機能することを追加します!

4

2 に答える 2

0

あなたのマークアップは:

<html><head>
<meta http-equiv="refresh" content="0; URL=https://HOSTNAMEHERE/cgi-bin/LANSAWEB?procfun+rn+Resnet+FIE+funcparms+UP(A2560):;H38FR10;?/#">
 </head></html>

ここでの問題は、META タグの CONTENT 値がセミコロンで区切られていることです。

URL を一重引用符で囲むようにマークアップを変更すると、IE で機能します。

<meta http-equiv="refresh" content="0; URL='https://HOSTNAMEHERE/cgi-bin/LANSAWEB?procfun+rn+Resnet+FIE+funcparms+UP(A2560):;H38FR10;?/#'">

META REFRESH を使用しない十分な理由があります (ここで説明します)。HTTP/301 または HTTP/302 リダイレクトを使用できない場合は、スクリプトが有効になっている場合は SCRIPT ブロックを使用して URL に移動し、META を NOSCRIPT ブロックに移動することを検討する必要があります。

この質問は重複しているようです: Meta refresh with semicolon and offers a workaround.

于 2013-07-15T18:48:16.627 に答える
0

コロンは URL の特殊文字であるため、エスケープする必要があります。つまり、URL エンコードされた文字列に変換します%3A

理論的には、URL のこの部分にコロンがあっても問題にはならないはずですが、IE8 で問題が発生しても不思議ではありません。

于 2013-07-15T18:48:25.997 に答える