HTTPS-соединение отключено jQuery? - PullRequest
12 голосов
/ 05 ноября 2010

У меня есть следующий php-скрипт, который работает без сбоев в нормальных условиях (то есть при непосредственном посещении страницы):

HTML

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<link rel="stylesheet" type="text/css" href="style.css" />
<link rel="stylesheet" type="text/css" href="css/contact_search.css" />
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.3/jquery.min.js"></script>
<script type="text/javascript" src="js/jquery.watermarkinput.js"></script>
<script type="text/javascript">
$(document).ready(function() {

$(document).click(function() {
    $("#display").hide();
});

var cache = {};

    $("#searchbox").keyup(function() {
        var searchbox = $(this).val();
        var dataString = 'searchword=' + searchbox;

        if (searchbox.length < 3 ) {
            $("#display").hide();
            } else {

            $.ajax({
                type: "POST",
                url: "contact_search/search.php",
                data: dataString,
                cache: false,
                success: function(html) {

                    $("#display").html(html).show();
                }
            });
        return false;
    });
});

jQuery(function($) {
    $("#searchbox").Watermark("Search for Group");
});
</script>
</head>

<body bgcolor="#e0e0e0">
<div class="body">


          <div class="liquid-round" style="width:100%;">
            <div class="top"><span><h2>Contacts List</h2></span></div>

            <div class="center-content"> 
                <img src="images/search.gif" style="float:right;" />
                <input type="text" id="searchbox" maxlength="20" value="<?php echo $_SESSION['hello'];?>" />
                <div id="display"></div><div style="clear:both;"></div>

            </div>

            <div class="bottom"><span></span></div>
        </div>


        <div class="liquid-round" style="width:97%;">
            <div class="top"><span><h2>My Messages</h2></span></div>

            <div class="center-content" style="min-height:200px;">                        
            </div>

            <div class="bottom"><span></span></div>
        </div>    


</div>
</body>
</html>

ОДНАКО - когда я добавляю следующий фрагмент вверху страницы, функции javascript / jquery просто перестают работать вообще.

<?php
    session_start();

    if( $_SERVER['SERVER_PORT'] == 80) {
        header('Location:https://'.$_SERVER['HTTP_HOST'].$_SERVER["REQUEST_URI"]); 
        die();
    }
?>

Эти страницы требуют входа в систему, поэтому я должен убедиться, что они защищены https, но эта ошибка все испортила. Есть идеи, что может быть причиной проблемы?

Ответы [ 2 ]

36 голосов
/ 05 ноября 2010

Вероятно, это браузер, который не отображает небезопасный (http) контент на страницах https, хотя есть простое исправление, используйте схему относительно URL, например:

<script type="text/javascript" src="//ajax.googleapis.com/ajax/libs/jquery/1.4.3/jquery.min.js"></script>

Таким образом, вы получите http://ajax.googleapis.com/.... на http:// версии вашей страницы и https://ajax.googleapis.com/.... на https:// версии.

0 голосов
/ 05 ноября 2010

Так как session_start создает HTTP-заголовки, я рекомендую выполнить проверку порта перед session_start.

Но эти строки не должны влиять на ваш JS ни при каких обстоятельствах, потому что перенаправление на HTTPS не зависит от того факта, что вашСайт работает через HTTPS.Так что, если вы не уверены, удалите строки и получите доступ к своей странице с помощью HTTPS.Приведи JS на работу там.А потом реализовать перенаправление.

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