Подтвердить что ты не робот

Отключено ли соединение HTTPS с jQuery?

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

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, но эта ошибка вызывает все это. Любые идеи, что может вызвать проблему?

4b9b3361

Ответ 1

Вероятно, браузер не отображает небезопасный (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://.

Ответ 2

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

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