Как вы получаете доступ к текущему местоположению iframe? - PullRequest
0 голосов
/ 29 сентября 2010

Проблема в том, что я использую iframe для обработки формы входа через POST через https, но родительским хостом iframe является http (хотя в том же домене)

это выполнимо?

Я пока не могу проверить это, потому что я могу использовать https только в нашей промежуточной среде.

Спасибо

  function process_form(f){


    var l = $("iframe#loginFrame");    
    if(l.length==0){      
      f.attr("target","loginFrame");      
      $('<iframe src="/player.htm?ajax=1"'+(!_DBG?' class="hide"':'')+' id="loginFrame" name="loginFrame"></iframe>').prependTo('body');      
      $("iframe#loginFrame").load(function() {
        var u = this.contentWindow.location;


        if(String(u).indexOf("confirm")>=0){ 
          change_form(1);
        }else if(u!=this.src){
          change_form(0);
        }
        log(u);
        log(this.src);

      });



    }else{
      warn("Frame already exists!"); 
    }

    change_form(-1);
    setTimeout(function(){ f.submit();},500);
    log(f);
  }

Ответы [ 3 ]

2 голосов
/ 29 сентября 2010

Краткий ответ, да.Для доступа к местоположению iframe, кстати, используйте myIframe.contentWindow.location.Подробнее см. http://www -archive.mozilla.org / docs / dom / domref / dom_frame_ref16.html .

Два кадра в разных протоколах (http против https) находятся в разных источниках,поэтому вы не можете делать ничего, требующего привилегий одного и того же источника.

С http://en.wikipedia.org/wiki/Same_origin_policy#Origin_determination_rules

Термин «происхождение» определяется с использованием доменного имени, прикладного уровняпротокол и (в большинстве браузеров) TCP-порт документа HTML, на котором выполняется сценарий.

Но расположение должно быть доступно независимо от политики одного и того же источника.

2 голосов
/ 29 сентября 2010

Является ли document.getElementById('iframename').src тем, что вы ищете?

РЕДАКТИРОВАТЬ

Похоже, что на ранее был дан ответ .Попробуйте document.getElementById("iframename").documentWindow.location.href.

1 голос
/ 29 сентября 2010

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

domReady { parent.form.hiddenField.value = document.location.href }

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

...