Ajax URL似乎已被公司防火墙阻止

问题描述 投票:0回答:1

我正在研究一个Ajax函数,该函数会加载另一个页面,以解决Shopify上iframe的限制。我的问题似乎是该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>

这可以通过公共网络正常运行。但是,当我的客户在公司防火墙后使用它时,它无法加载页面。经过进一步检查,看来我的php托管的站点URL也无法加载(我无法在那里确认)。如果相关,请参见以下页面示例:

<?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永远不会在客户端尝试通过浏览器加载时加载

-Ajax从不给出错误响应

-Webmaster / IT团队无法联系(我已尝试与他们联系至少4个月)

我尝试过的:

-最近添加元标记和!DOCTYPE(以防万一)

-通过W3C验证iframe网站和URL网站

-确认iframe网站和URL网站都可与VPN和公共网络一起使用

-检查主要网络过滤组(语义,古奥拓等)的正确分类,并将其设置为“ SAFE”。

我的问题:

-如何查找URL是否被阻止或ajax请求被剥离?

-如果网络正在过滤我的ajax URL,我是死路一条还是有其他选择?

javascript php jquery ajax firewall
1个回答
0
投票

我如何确定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,我是死路一条还是有其他选择?

您在应用程序级别上处于死胡同,除非您愿意做一些真正令人费解的事情,例如拥有第三方服务,否则您将知道没有防火墙限制,请请求该页面,然后转发它可以从该防火墙后面访问的服务。所以简短的答案是,不,不是真的(至少不是实际上)]

© www.soinside.com 2019 - 2024. All rights reserved.