gpt4 book ai didi

javascript - HTTP_X_REQUESTED_WITH 在 Firefox 4 中无法正常工作

转载 作者:可可西里 更新时间:2023-11-01 01:02:06 26 4
gpt4 key购买 nike

我正在使用此代码重定向我的用户,从他们的浏览器中阻止仅使用 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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com