服务器自动post,jquery ajax $.post自动变GET的解决方式(for CI)

环境:CI 3.x + windows 2008 + phpstudy + jquery 1.7.2 + apache

以往一直用lnmp,这次用windows+apache,遇到了一些问题,记录下来。

将本地的文件上传到服务器上以后,有一个将大段html提交到服务器处理的代码,是用jquery的$.post方式提交的。

本地运行没有问题,但是服务器上报错:HTTP 414 “Request URI too long” 表单提交内容太多 。

本地是win7 + phpstudy。。。服务器上同样是phpstudy。。为什么服务器会报错呢?

针对Apache 414错误,网上的解决方式:

LimitRequestLine 指令

设置HTTP请求行的字节数限制。

LimitRequestLine指令允许服务器管理员增加或减少客户端HTTP请求行允许大小的限制。因为请求行包括HTTP方法、URI、协议版本,所以LimitRequestLine指令会限制请求URI的长度。服务器会需要这个值足够大以装载它所有的资源名,包括可能在GET请求中所传递的查询部分的所有信息。

这个指令给了服务器管理员更大的可控性以控制客户端不正常的请求行为。这有助于避免某些形式的拒绝服务攻击。

LimitRequestFieldSize 指令

指定HTTP请求头允许的字节大小。

LimitRequestFieldSize指令允许服务器管理员增加或减少HTTP请求头域大小的限制。一般来说,服务器需要此值足够大,以适应普通客户端的任何请求的头域大小。一个普通头域的大小对于不同的客户端来说是有很大差别的,一般与用户配置他们的浏览器以支持更多的内容协议密切相关。SPNEGO的认证头最大可能达到12392字节。

这个指令给了服务器管理员更大的可控性以控制客户端不正常的请求行为。这有助于避免某些形式的拒绝服务攻击。

Apache的默认值为8K,直接在httpd.conf中添加即可,如

LimitRequestLine 32k

LimitRequestFieldSize 32k

以上文章有两点需要注意的地方:

A、

LimitRequestLine 32k

LimitRequestFieldSize 32k

需要添加在listen 80 下面。

B、估计对于更高的Apache版本。32K字样不支持。直接改成字节数。我改成4090000(两个都改)后成功提交。

我在添加apache这两个参数之前,发现我的$.post提交到服务器时候,变成了get方式。而我这个ajax提交的是同一个域名,不存在跨域问题,不过我的post里是设置的josn。改成$.ajax方式,

dataType: "json"

type: "post"

依旧不行。

经过摸索,发现需要将CI的config配置文件中,

1

2

3

4

5

dataType:"json"

type:"post"

依旧不行。

经过摸索,发现需要将CI的config配置文件中,

$config['uri_protocol'] = 'REQUEST_URI';

修改为:

1

2

$config['uri_protocol']='REQUEST_URI';

修改为:

$config['uri_protocol'] = 'PATH_INFO';

1

$config['uri_protocol']='PATH_INFO';

$.ajax提交才显示post方式。最后修改了一下Apache的limitRequestLine 和 LimitReuqestFieldSize后才去掉414错误。

———————————————后记————————————————–

经过一段时间琢磨,发现不是$config[‘uri_protocol’] = ‘REQUEST_URI’;的问题,现在我用的是$config[‘uri_protocol’] = ‘REQUEST_URI’;方式,不会出现post变get了。但是如何解决的,竟然忘记了!!!

仔细回想了一下,大概是提交的时候,用的相对路径的原因吧。请大家尝试一下。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
提供的源码资源涵盖了安卓应用、小程序、Python应用和Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。
好的,下面是关于 `$.ajax()`、`$.get()`、`$.post()` 的参数解析及代码实例: ## `$.ajax()` `$.ajax()` 是 jQuery 中最基础的 AJAX 方法,可以通过它来发起各种类型的 AJAX 请求,其常用参数如下: - `url`:请求的 URL 地址。 - `type`:请求类型,如 GET、POST 等。 - `data`:要发送的数据,可以是对象、字符串或数组。 - `dataType`:服务器返回的数据类型,如 text、json 等。 - `success`:请求成功后的回调函数。 - `error`:请求失败后的回调函数。 下面是一段 `$.ajax()` 的代码实例: ```javascript $.ajax({ url: 'test.php', type: 'POST', data: { name: '张三', age: 18 }, dataType: 'json', success: function(data) { console.log(data); }, error: function(xhr, textStatus, errorThrown) { console.log(textStatus, errorThrown); } }); ``` ## `$.get()` `$.get()` 是一个简单的 GET 方法,其常用参数如下: - `url`:请求的 URL 地址。 - `data`:要发送的数据,可以是对象、字符串或数组。 - `dataType`:服务器返回的数据类型,如 text、json 等。 - `success`:请求成功后的回调函数。 - `error`:请求失败后的回调函数。 下面是一段 `$.get()` 的代码实例: ```javascript $.get('test.php', { name: '张三', age: 18 }, function(data) { console.log(data); }, 'json'); ``` ## `$.post()` `$.post()` 是一个简单的 POST 方法,其常用参数如下: - `url`:请求的 URL 地址。 - `data`:要发送的数据,可以是对象、字符串或数组。 - `dataType`:服务器返回的数据类型,如 text、json 等。 - `success`:请求成功后的回调函数。 - `error`:请求失败后的回调函数。 下面是一段 `$.post()` 的代码实例: ```javascript $.post('test.php', { name: '张三', age: 18 }, function(data) { console.log(data); }, 'json'); ``` 以上就是 `$.ajax()`、`$.get()`、`$.post()` 的参数解析及代码实例。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值