Ajax 重写规则在jquery.get()上不起作用?
首先,我对我的问题标题感到抱歉,但实际上我脑子里没有更好的想法 我有一个.htaccess文件,可以进行“常规”重写:Ajax 重写规则在jquery.get()上不起作用?,ajax,.htaccess,xss,Ajax,.htaccess,Xss,首先,我对我的问题标题感到抱歉,但实际上我脑子里没有更好的想法 我有一个.htaccess文件,可以进行“常规”重写: RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-l RewriteRule ^(.+)$ index.php?url=$1 [QSA,L] 这使我可以使用此url,例如(我正在
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-l
RewriteRule ^(.+)$ index.php?url=$1 [QSA,L]
这使我可以使用此url,例如(我正在与xampp合作):
localhost/<project>/en/products/electronic/television/
localhost//en/products/electronic/television/
因此,这个url位于$_GET['url']变量中,我可以使用它(作为数组)在HMVC模式中加载控制器
而且,为了不必输入语言(在上面的示例中为“en”),我实现了一个自动插入“en”的函数。基本上,这意味着下面的url提供相同的控制器,并且分别提供相同的输出
localhost/<project>/products/electronic/television/
localhost//产品/电子/电视/
但是现在我想知道,我的javascript文件(jquery&co)位于文件夹中
<project>/lib/js/query/jquery.min.js
/lib/js/query/jquery.min.js
可以简单地要求如下:
<script type="text/javascript" src="/<project>/lib/js/jquery/jquery.js"></script>
我希望请求的路径最终会是这样的(因为我在$\u GET['url']变量中添加了语言,它将尝试加载一个控制器,但失败了
src="/<project>/en/lib/js/jquery/jquery.js"
src=“//en/lib/js/jquery/jquery.js”
好吧,如果是这样的话,我很高兴它能以这种方式工作,但它让我想到了尝试这种方法的想法:
$(document).ready(function() {
alert("this is a test");
$.get("/<project>/<config-dir>/<config-file>", function(data) {
alert(data);
});
});
$(文档).ready(函数(){
警惕(“这是一项测试”);
$.get(“///”,函数(数据){
警报(数据);
});
});
瞧,它输出了配置文件。
我认为在高效服务器上的行为是相同的,但是在路径中没有“/”节点。
在不从文档根目录移动配置文件的情况下,如何防止出现这种情况
基本上,我已经确保XSS攻击不会(几乎)失败。之所以“几乎”是因为没有100%的安全性
我希望我表达得很好:)
谢谢你的帮助/建议。我发现了问题所在,为什么我可以访问配置文件:重写条件。他们简单地说,如果请求的文件名不是目录、文件或链接(?),则以下规则应生效 因此,这基本上解释了为什么重写规则在ajax请求上不起作用(在普通请求上也不起作用) 现在我不允许访问的问题解决了 为了从重写规则中排除某些特定目录,我添加了以下规则:
RewriteRule ^(<dirname>)($|/) - [L]
RewriteRule^()($|/)-[L]
RewriteRule ^(<dirname>)($|/) - [L]