Php ajaxpost中URL编码的意义

Php ajaxpost中URL编码的意义,php,jquery,ajax,Php,Jquery,Ajax,我试图使用AJAXPOST提交表单,但服务器给了我403错误(get工作正常)。后来,当我编码我的“URL”时,它工作得很好。我无法理解的是,如果我使用方法post,那么表单数据将进入http数据包的主体。那么,如果我对我的URL进行编码,会有什么不同呢?为什么服务器将POST的未编码URL访问视为注入 var uri = encodeURI($('#registrationForm').attr('action')); // 403 error if i do no

我试图使用AJAXPOST提交表单,但服务器给了我403错误(get工作正常)。后来,当我编码我的“URL”时,它工作得很好。
我无法理解的是,如果我使用方法post,那么表单数据将进入http数据包的主体。那么,如果我对我的URL进行编码,会有什么不同呢?为什么服务器将POST的未编码URL访问视为注入

  var uri = encodeURI($('#registrationForm').attr('action'));
            // 403 error if i do not use encodeURI, everything else same
              console.log(dataString);
                      $.ajax({

                      type:"POST",
                      url:uri,
                      data:dataString,
                      success:function(result){

                        console.log(result);

                        },

                      error:function(error){

                             alert(error);
                           }
                 });
如果您使用的是什么php框架(MVC)?另一个是HTTP服务器(apache或nginx)作为403禁止的HTTP状态代码,403与权限有关,您没有访问页面的权限

而不是

 $.ajax({type:"POST",url:uri,data:{ ...
试着换成

 $.ajax({type:"PUT",url:uri,data:{ ..

你对我的“URL”进行编码到底是什么意思?你能提供你所做的实际代码吗?403 HTTP响应代码通常意味着服务器出于某种原因拒绝授予您访问请求资源的权限。为什么,这里仍然完全不清楚。@Sherif包含了代码。请查看
($(“#registrationForm”).attr('action')的值
,这是什么?如果您在未正确编码的情况下出现错误,那么很明显这是因为服务器不接受未正确编码的URI。仅供参考,HTTP确实需要请求路径的有效URL编码。因此,我得到的是(如果我错了,请更正我),服务器只检查post方法的url编码,并假设get方法不会用于服务器上的任何状态更改(仅用于拉取页面)所以,url编码没有被检查。所以,区别在于服务器配置,而不是get和post的http协议。不幸的是,我不知道这一点。这就是为什么我建议您检查
$('#registrationForm').attr('action')的值
在这两种情况下。据我所知,在您的
POST
请求和
GET
请求之间,它们的值是不同的。我不打算在没有进一步调试的情况下做出任何武断的假设。我理解这一点,但它甚至不应该与GET请求一起工作。url编码与权限检查有什么区别?这可能是与apache mod_安全性或您的服务器有关的问题。htaccessI已经使用encodeURI使其工作,因此它不是关于尝试put。我只是想知道在get和post情况下URL编码的行为和效果的差异。您能详细说明一下为什么要使用put吗?因为put和post都可以用于创建n、 我在用邮局。