- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我正在使用此代码重定向我的用户,从他们的浏览器中阻止仅使用 ajax 的页面
if(isset($_SERVER['HTTP_X_REQUESTED_WITH']) &&
strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest') {}
else {
header("Location: /");
}
它在 Google chrome、Firefox 26 和 IE11 上运行良好,但在 firefox 4 中,即使在使用 ajax 加载时也会触发 header 。
我该如何解决这个问题?
最佳答案
您可以尝试自己设置 HTTP_X_REQUESTED_WITH header ,或者设置不同的 header 并同时检查它:
$.ajaxSetup({
beforeSend: function (request)
{
request.setRequestHeader("HTTP_X_REQUESTED_WITH",'xmlhttprequest');
request.setRequestHeader("BACKUP_FIREFOX_AJAX", 'xmlhttprequest');
}
});
然后
if((isset($_SERVER['HTTP_X_REQUESTED_WITH']) &&
strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest') ||
(isset($_SERVER['BACKUP_FIREFOX_AJAX']) &&
strtolower($_SERVER['BACKUP_FIREFOX_AJAX']) == 'xmlhttprequest'))
鉴于它是 firefox 4(非常旧的版本),不确定它是否可以工作,但值得一试。
好的,在进一步挖掘时,似乎有一个旧的 Firefox 错误,其中 1) 如果 xhr 被重定向,则自定义 header 丢失,以及 2) 当“自动代理检测”运行时,firefox 有时会执行 < em>internal 重定向触发了 1 中的问题。
因此,您可能需要做除 header 之外的其他事情...也许将查询字符串参数附加到所有传出的 ajax 请求,我不确定您是否需要直接修改 url 或 GET 请求的数据,所以我会两者都做,并希望它有效:
$.ajaxSetup({
beforeSend: function(jqXHR, settings) {
if (settings.url.split('?').length > 1) {
settings.url = settings.url + '&ajax=1';
}
else {
settings.url = settings.url + '?ajax=1';
}
},
data: {
ajax: '1'
}
});
然后你可以这样做:
if((isset($_SERVER['HTTP_X_REQUESTED_WITH']) &&
strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest') ||
$_GET['ajax']==1)
关于javascript - HTTP_X_REQUESTED_WITH 在 Firefox 4 中无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21461037/
这个问题在这里已经有了答案: 关闭 10 年前。 Possible Duplicate: PHP: Does $_SERVER['HTTP_X_REQUESTED_WITH'] exist or n
我正在构建一个 Django 站点并尝试使用 request.is_ajax() 函数...但是它只能在本地这让我发疯! 我正处于刚刚丢弃 header 的位置。这里(在 django 测试服务器上)
我正在以编程方式将表单发布到 PHP 表单处理脚本。有没有办法让表单处理脚本认为帖子是由 ajax 完成的?表单处理程序当前检查 $_SERVER 中的 HTTP_X_REQUESTED_WITH 以
在整个互联网上,甚至包括在 Stack Overflow 上,人们都说检查请求是否为 AJAX 的好方法是执行以下操作: if (strtolower($_SERVER['HTTP_X_REQUEST
我正在使用 Colorbox,如果我指定将 iframe 与它一起使用,则 $_SERVER['HTTP_X_REQUESTED_WITH'] 变量不再对我可用。我需要它来检测 ajax 是否已加载,
是否所有浏览器都支持 PHP 的 $_SERVER['HTTP_X_REQUESTED_WITH']? 您是否知道 $_SERVER['HTTP_X_REQUESTED_WITH'] 无法工作的任何浏
我正在使用此代码重定向我的用户,从他们的浏览器中阻止仅使用 ajax 的页面 if(isset($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower
我正在使用 Django 开发一个新网站,但我遇到了 ajax 请求的问题。我一直在谷歌上搜索并阅读了很多帖子和文章(其中大多数都解释了相同的内容)。 问题:执行了 ajax 调用,我在 View 中
我正在为 linux 5.6.33 运行 XAMPP js代码: var url = "send.php"; xhttp = new XMLHttpRequest(); xhttp.open("POS
我是一名优秀的程序员,十分优秀!