Сделать ссылку небезопасной - PullRequest
0 голосов
/ 02 февраля 2012

У меня есть ссылка JavaScript, которая выглядит следующим образом:

<a href="#" onclick="window.open('TrackPackage.asp?track=235&ship=OTHER&ShippingMethod=1', '', 'location=1,menubar=1,scrollbars=1,status=1,resizable=1,width=635,height=460'); return false;">
<span class="PageText_L288n">TRACK YOUR PACKAGE</span>
</a>

Однако на него ссылаются с защищенной страницы, поэтому он становится защищенной страницей. К сожалению, это создает проблему для меня, так как незащищенная форма автоматически отправляется, когда они попадают на страницу. Они получают запрос: эта форма отправляется небезопасно. На этих страницах нет конфиденциальных данных, поэтому мне не нужно защищать страницу в первую очередь. Есть ли в HTML или JavaScript атрибут, который может сделать ссылку небезопасной. Я не могу изменить саму ссылку, потому что это динамическая ссылка.

Однако я верю, что некоторые jQuery могут добавить http://www.example.com/ до TrackPackage.asp. Я думаю, это было бы приемлемо, но я бы предпочел какой-то атрибут, который просто сделает ссылку небезопасной. Спасибо

Ответы [ 3 ]

0 голосов
/ 02 февраля 2012

Вы можете попытаться переопределить встроенную функцию. Но в некоторых браузерах это может не работать (не было найдено такого браузера, поэтому предположим, что он работает во всех, по крайней мере, основных браузерах :)):

var windowOpen = window.open;
window.open = function(url, name, settings) {
    var url = 'http://www.example.com/' + url;
    alert("New url = " + url);
    windowOpen(url, name, settings);  
}

Если вы хотите сделать это для выбранного класса ссылок, то вы можете сделать это следующим образом (идея модификации атрибута onclick в виде текстовой строки не самая лучшая)

<script>
var windowOpen = window.open, clicked = false;
window.open = function(url, name, settings) {
    if (clicked) var url = 'http://www.example.com/' + url;
    alert("New url = " + url);
    windowOpen(url, name, settings);  
}
$(document).ready(function(){
   $('span.packagetracklink').click(function(){
        clicked = true;
        setTimeout(function(){clicked = false;}, 200);  
   });
});
</script>
<a href="#" onclick="window.open('some_url', '', ''); return false;">
<span class="packagetracklink">TRACK YOUR PACKAGE</span>
</a><br>
<a href="#" onclick="window.open('some_url', '', ''); return false;">
<span class="another_class">TRACK YOUR PACKAGE</span>
</a>
0 голосов
/ 02 февраля 2012

Вы должны каким-то образом иметь возможность сначала получить экземпляр этого тега.У него нет идентификатора или класса, так что вы сами там (если вы не вставите код родительского элемента и код родного брата, по крайней мере, отрывки.

var link = $("a"); // I don't have enough info to tell you how to precisely get this instance
var originalOnClick = link.attr("onclick");
var part1 = "window.open('"; // this is always the same, right?
var part2 = originalOnClick.substr(part1.length); // the remainder, beginning with TrackPackage.asp
var newOnClick = part1 + "http://www.example.com/" + part2;

link.attr("onclick", newOnClick);

Существуют другие способы ввода строкиконстанта в существующую строку, но это должно сработать - если я вас достаточно хорошо понял.

0 голосов
/ 02 февраля 2012

Если вы динамически получаете страницу .asp перед ее использованием в window.open, вы можете просто заменить String, чтобы заменить «https» протоколом «http» в URL-адресе, или, если есть какой-либо протокол, добавить«http» в начале if.

Я не пробовал этого, так как у меня нет https-страницы для игры, но я думаю, что это может сработать.

...