Ajax URL 似乎被公司防火墙阻止
Ajax URL appears blocked by company firewall
我正在研究一个 ajax 函数,该函数加载另一个页面作为绕过 Shopify 上的 iframe 限制的方法。我的问题似乎是 URL 被阻止或 headers 被剥离。没什么太复杂的,一切都按照我的需要使用以下命令:
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>
这可以通过 public 网络正常工作。但是,当我的客户在公司防火墙后面使用它时,它无法加载页面。经过进一步检查,我的 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 和 public 网络
-检查主要网络过滤组(语义、paleo-alto 等)的正确分类并设置为 'SAFE'.
我的问题:
-我如何知道URL是否被阻止或ajax请求被剥离?
-如果网络正在过滤我的 ajax URL 我是在死胡同里还是有其他选择?
How do I find out if the URL is blocked or the ajax request is being stripped?
如果出现网络错误,您可以在传递给 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);
};
If the network is filtering my ajax URL am I at a dead end or is there another option?
你在应用程序级别有点陷入死胡同,除非你愿意做一些非常复杂的事情,比如拥有第三方服务,你知道不会有防火墙限制,请求页面,并且然后将其转发到可从该防火墙后面访问的服务。所以简短的回答是,不,不是真的(至少实际上不是)
我正在研究一个 ajax 函数,该函数加载另一个页面作为绕过 Shopify 上的 iframe 限制的方法。我的问题似乎是 URL 被阻止或 headers 被剥离。没什么太复杂的,一切都按照我的需要使用以下命令:
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>
这可以通过 public 网络正常工作。但是,当我的客户在公司防火墙后面使用它时,它无法加载页面。经过进一步检查,我的 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 和 public 网络
-检查主要网络过滤组(语义、paleo-alto 等)的正确分类并设置为 'SAFE'.
我的问题:
-我如何知道URL是否被阻止或ajax请求被剥离?
-如果网络正在过滤我的 ajax URL 我是在死胡同里还是有其他选择?
How do I find out if the URL is blocked or the ajax request is being stripped?
如果出现网络错误,您可以在传递给 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);
};
If the network is filtering my ajax URL am I at a dead end or is there another option?
你在应用程序级别有点陷入死胡同,除非你愿意做一些非常复杂的事情,比如拥有第三方服务,你知道不会有防火墙限制,请求页面,并且然后将其转发到可从该防火墙后面访问的服务。所以简短的回答是,不,不是真的(至少实际上不是)