Jquery https http проблема - PullRequest
       4

Jquery https http проблема

0 голосов
/ 16 декабря 2011

Я использую Fancybox из FancyApps для предварительного просмотра контента на моем сайте.

<a href="#inline" class="various"><span class="info"></span></a>

<div id="inline" style="display:none;width:500px;">
    <h2>Always enjoy the sunny days!</h2>
</div>

<script type="text/javascript">
    $(document).ready(function() {
        $(".various").fancybox({
                maxWidth    : 500,
                autoSize    : true,
                closeClick  : false,
                openEffect  : \'none\',
                closeEffect : \'none\'
            });
    });
</script>

В принципе это работает нормально, но в одной ситуации мне нужно перенаправить свой сайт на защищенный сервер, поэтому доменизменится.

Пример:

https://secure -payment.com / relay / v2 / relay.cgi / http://www.mydomain.com/checkout

Когда я использую ссылку для запуска Fancyboxнет этой страницы, я просто получаю " Запрошенный контент не может быть загружен. Пожалуйста, попробуйте позже. "

Кроме того (я не знаю, если это актуально) я запускаюСценарий ниже в нижней части моей страницы, это по просьбе платежной компании.

//
// Variables used for searching
//
var relayurl = "https://relay.ditonlinebetalingssystem.dk/";
var relayurl_replace = "https://relay.ditonlinebetalingssystem.dk/relay/v2/relay.cgi/";
var baseurl = "";

function getURLParam(strParamName){
  var strReturn = "";
  var strHref = window.location.href;
  if ( strHref.indexOf("?") > -1 ){
    var strQueryString = strHref.substr(strHref.indexOf("?")).toLowerCase();
    var aQueryString = strQueryString.split("&");
    for ( var iParam = 0; iParam < aQueryString.length; iParam++ ){
      if (aQueryString[iParam].indexOf(strParamName.toLowerCase() + "=") > -1 ){
        var aParam = aQueryString[iParam].split("=");
        strReturn = aParam[1];
        break;
      }
    }
  }
  return unescape(strReturn);
} 

//
// Replace all links to NOT use the relay-script when the user clicks on the links
//
function replaceRelayButtons(parent, startTimer) {  
    var aEls = parent.childNodes;
    for (var i = 0, aEl; aEl = aEls[i]; i++) {
        //
        // Do recursive call
        //
        replaceRelayButtons(aEls[i]);

        if (aEls[i].tagName == 'A' || aEls[i].tagName == 'a') {
            if (aEls[i].href.indexOf(relayurl) == 0) {
                aEls[i].href = aEls[i].href.replace(relayurl_replace, "");
                aEls[i].href = aEls[i].href.replace(relayurl, "")
                if (aEls[i].href.indexOf("http://") != 0) {
                    aEls[i].href = (baseurl + "/" + aEls[i].href);
                }
            }
        }
        if (baseurl.length > 0) {
            if (aEls[i].tagName == 'IMG' || aEls[i].tagName == 'img') {
                if (aEls[i].src.indexOf(relayurl) == 0 && aEls[i].src.indexOf(relayurl_replace) == -1) {
                    aEls[i].src = aEls[i].src.replace(relayurl, relayurl_replace + "/" + baseurl + "/");
                }
            }
        }
    }

    //
    // Now start the timer which runs this function again to fix all body elements that might not be loaded in the browser yet
    //
    if (startTimer) {
        setTimeout("replaceRelayButtons(document.body, false)",1000)
        setTimeout("replaceRelayForms()",1000)
    }
}

//
// Replace all form actions to NOT use the relay-script when the user clicks on the links
//                              
function replaceRelayForms() {
    for (i = 0; i < document.forms.length; i++) {
        if (document.forms[i].action.indexOf(relayurl) == 0) {
            document.forms[i].action = document.forms[i].action.replace(relayurl_replace, "");
            document.forms[i].action = document.forms[i].action.replace(relayurl, "")
            if (document.forms[i].action.indexOf("http://") != 0) {
                document.forms[i].action = (baseurl + "/" + document.forms[i].action);
            }
        }
    }
}

//
// Go and replace the urls and form actions
//
if (getURLParam('baseurl') != null) {
    baseurl = getURLParam('baseurl')
}
replaceRelayButtons(document.body, true);

Что я могу сделать не так?Это вообще возможно?

Ответы [ 2 ]

0 голосов
/ 16 декабря 2011

Я думаю, что проблема "Запрошенный контент не может быть загружен. Пожалуйста, повторите попытку позже." это больше относится к этой теме https://stackoverflow.com/a/8509018/1055987, чем факт, что вы находитесь на безопасном сервере.

поэтому попробуйте изменить эту часть вашего кода

<div id="inline" style="display:none;width:500px;">
    <h2>Always enjoy the sunny days!</h2>
</div>

к этому

<div style="display:none;">
    <h2 id="inline" style="width:500px;">Always enjoy the sunny days!</h2>
</div>
0 голосов
/ 16 декабря 2011

Я не думаю, что что-то не так, но вы не можете загрузить HTTPS-URL в HTTP-URL, потому что это должен быть и безопасный URL-адрес.Это потому, что fancybox генерирует iFrame, если URL-адрес другого домена.

IE покажет вам ошибку, но Firefox загрузит страницу, попробуйте и вы увидите.

Для получения более подробной информации: JavaScript HTTPS to HTTP Защитный вопрос iFrame

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...