Ajax URL заблокирован брандмауэром компании - PullRequest
0 голосов
/ 23 января 2020

Я работаю над функцией ajax, которая загружает другую страницу, чтобы обойти ограничения iframe в Shopify. Моя проблема, кажется, что URL заблокирован или заголовки удалены. Ничего сложного, все работало так, как мне было нужно, используя следующее:

function get_report() {
     var params = {
        type: "GET",
        url: "https://example.com/mypage.php",
        dataType: 'html',
        success:function(html) {
			        $("#content_div").load("https://example.com/mypage.php");
             },
        error: function(XMLHttpRequest, textStatus) {
               alert('Error : ' +XMLHttpRequest.response);
             }
     };
       
       jQuery.ajax(params);
};
<button onclick="get_report()">Get</button>
<div id="content_div"></div>

Работает через публичные c сети без проблем. Однако, когда мой клиент использует его за брандмауэром компании, он не может загрузить страницу. При дальнейшей проверке выясняется, что URL сайта, на котором размещен мой php, также не может быть загружен (я не могу там подтвердить физически). Вот пример этой страницы, если она уместна:

<?php 
$allowedOrigins = [
    "https://myexample.com",
    "https://myexample2.com"
];

if (array_key_exists('HTTP_ORIGIN', $_SERVER)) { 
	$origin = $_SERVER['HTTP_ORIGIN']; 
} else if (array_key_exists('HTTP_REFERER', $_SERVER)) { 
	$origin = $_SERVER['HTTP_REFERER']; 
} else { 
	$origin = $_SERVER['REMOTE_ADDR']; 
}

if (in_array($origin, $allowedOrigins)) {
header("Access-Control-Allow-Origin: " .$origin);	
}
setcookie('cross-site-cookie', 'name', ['samesite' => 'None', 'secure' => true]);
?>

<!DOCTYPE HTML>
<html lang="en">
  <head>
    <meta charset="utf-8">
    <title>TEST ALT IFRAME</title>
  </head>
  <body>	
    <div><?php echo "IT WORKS"; ?></div>
  </body>
</html>

Что я знаю:

- Ходил клиент через доступ к консоли chrome, в списке ноль ошибок

-URL никогда не загружается, когда клиент пытается загрузить его через браузер 4 месяца)

То, что я пробовал:

-Последнее добавление мета-тегов и! DOCTYPE (на всякий случай)

-Валидация обоих Сайт iframe и сайт URL с W3 C

-Подтверждение, что сайт iframe и сайт URL работают с VPN и publi c сетей

-Проверка на правильную категоризацию в основных группах фильтрации сети (семантика, палео-альт и т. д. c) и для него установлено значение «БЕЗОПАСНЫЙ».

Мой вопрос:

-Как узнать, является ли URL-адрес заблокирован или ajax запрос отбрасывается?

-Если сеть фильтрует мой ajax URL, я в тупике или есть другой вариант на

1 Ответ

0 голосов
/ 23 января 2020

Как узнать, заблокирован ли URL-адрес или запрос ajax отбрасывается?

Если есть ошибка сети, вы можете ответить на нее в обратном вызове ошибки Вы переходите на AJAX вызов:

function get_report() {
     var params = {
        type: "GET",
        url: "https://example.com/mypage.php",
        dataType: 'html',
        success:function(html) {
                    $("#content_div").load("https://example.com/mypage.php");
             },
        error: function(XMLHttpRequest, textStatus) {
               // inspect XMLHttpRequest to determine if network error occurred
               alert('Error : ' +XMLHttpRequest.response);
             }
     };

       jQuery.ajax(params);
};

Если сеть фильтрует мой ajax URL, я в тупике или есть другой вариант?

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

...