Ajax терпит неудачу в Firefox - работает во всех других браузерах - PullRequest
0 голосов
/ 13 октября 2019

Я прочитал этот форум и всю сеть о том, почему браузер Firefox не может обновить изображение CAPTCHA, созданное в PHP, одним нажатием кнопки. Мой скрипт работает в Edge, Chrome, Safari, Brave, но не в Firefox, фактически я создал 3 разных скрипта, и то же самое происходит со всеми скриптами. Я не очень хорош в кодировании и следую инструкциям, чтобы попасть сюда, но я переписал эти сценарии, чтобы попытаться заставить их работать, что они делают, но не в FF.

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

Может ли кто-нибудь помочь мне и помочь с объяснением, почему это происходит.

фактическая тестовая страница

http://www.nailit.nz/REFRESH%20CAPTCHA%20ONLY/index_danials_version.php

Спасибо за любую помощь, Крис

Кнопка со страницей изображений

<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>Untitled Document</title>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>
<script>

$(document).ready(function(){
    $("#btn").click(function(){
        $("#test").load("captcha_image.php");

        return false;
        });

});

</script>
</head>

<body>
<div id="test">
    <p>This is the first bit of content</p>
</div>
<button id="btn">Change Image</button>
</body>
</html>

Страница с изображениями

<img src ="captcha_CHRIS.php">

Страница создания изображений в PHP

<?php 
    session_start();

    header("Pragma:no-cache");

    $chars = "0123456789abcderghijklmnopABCDEFGHIJKLMNOPQRSTUVWXYZ";

    $random_string = '';

        for($i = 0; $i < 5; $i++){

            $random_string .= $chars[rand(0, strlen($chars)-1)];

            }

    $_SESSION['captcha'] = strtolower($random_string);

    $captcha_img = imagecreatefrompng("assets/captcha_background.png");
    /* Below first numbers desc: 1)font size. 2)rotation angle. 3)left position. 4)top position */
    imagettftext($captcha_img, 24, -8, 8, 32, imagecolorallocate($captcha_img, 255, 114, 0),"assets/SedgwickAve-Regular.ttf",$random_string);
    header("Content-type: image/png");
    imagepng($captcha_img, null, 0);
    imagedestroy($captcha_img);


?>

Ответы [ 2 ]

0 голосов
/ 13 октября 2019

Вероятно, это кеширование Firefox, как упоминал Генримарт.

Попробуйте:

  • Посещение сайта в режиме частного просмотра
  • Нажатие i/Shield/Lock рядом св адресной строке, подождите несколько секунд и нажмите «Очистить куки и данные сайта ...», затем выберите домен

Если ничего из этого не помогло, попробуйте отключить кэширование через ваш веб-сервер или Cloudflare. ,Вот несколько быстрых ссылок, которые я нашел:

Надеюсь, это поможет, пожалуйста, дайте мне знать, если вы решите свою проблему!

0 голосов
/ 13 октября 2019

Это может быть связано с механизмом кэширования firefox. Вам нужно будет установить кеш на false

cache: false

в ajax, вы можете попробовать это следующим образом

$(document).ready(function(){
  $("#btn").click(function(){   

/*
 nounce is usually any values you set when making a request to server backend. its used to validate data on backend against
CSRF attack */
var nounce= 1;
var datasend = "nounce="+ nounce;
        $.ajax({

            type:'POST',
            url:'captcha_image.php',
            data:datasend,
                        crossDomain: true,
            cache:false,
            success:function(data){
            alert('success');   

                $('#test').fadeIn('slow').prepend(data);

            }


        });


});

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