当使用AJAX和mod_rewrite时,报头和POST数据消失
Headers and POST data disappear when using AJAX and mod_rewrite
我有一个Apache 2.2.21在Windows 7运行在http://localhost
,使用mod_rewrite重定向请求从/backend
开始到http://localhost:8080
的实例。http://localhost:8080
的服务器反过来是一个CherryPy 3.2.0服务器,它被设计为接受post JSON消息并响应JSON消息。
我的问题是,当我尝试POST到http://localhost/backend
使用AJAX的CherryPy服务器最终看到没有请求头和没有附加JSON数据的消息。因此,它返回一个400 BAD REQUEST错误。但我也有在Excel和。net中构建的应用程序,向http://localhost/backend
发送类似的消息,没有问题。此外,我还尝试在http://localhost/route
(使用Django)设置一个页面,它将AJAX POST传递给http://localhost:8080
;
我的问题是为什么AJAX POST ' http://localhost/backend'不工作。也许这与AJAX安全性有关?
使用jQuery的JavaScript示例如下:
$.post(
"/backend",
JSON.stringify({"type": "getdata", "id": "1"}),
function(data) {
alert("Done");
}
);
Apache配置文件的相关部分是
RewriteEngine on
RewriteRule ^/backend http://localhost:8080 [proxy]
CherryPy正在运行,没有特殊的启动选项:
cherrypy.config.update({'server.socket_port': 8080})
cherrypy.quickstart(MyServer())
您考虑过使用mod_proxy和ProxyPass吗?它看起来更适合你想要做的事情。你只需要这样一个指令:
ProxyPass /backend http://localhost:8080/
您可以添加连接超时,重试尝试,重写cookie域,甚至重写响应头主机名与ProxyPassReverse
。
这实际上只是一个未能在指定Content-Type为application/json的AJAX请求中手动包含标头的情况。例如,
$.ajax({
...,
headers: {"Content-Type": "applicaton/json"},
...
});
- 如何使用WCF服务和javascript表单post上传.doc文件
- Jquery POST未填充数组
- 如何在php文件中获取$.post-ajax传递的值
- 在POST中将html表作为csv提交
- JS表单提交"无法使用Chrome数据保护程序加载此页面.尝试重新加载页面.调试信息:POST CISmtuK
- 如何使用post方法从方法上传文件
- Django: AJAX + CSRF POST gives 403
- AJAX不会在文件上传后重定向到网页-POST方法
- 下载使用POST数据动态生成的文件
- 如何使用自定义标头跨域执行AJAX POST
- 错误405:向Java控制器(Ajax)发送JSON时找不到POST方法
- jQuery在输入下验证post错误消息
- 在文本区域POST后解码JSON
- Node.js - POST to iFrame?
- 中止POST XHR可靠
- 当method=post时,jQueryAjax返回404
- 当我在form_for中的text_field_tag中点击Enter时,如何禁止发出POST请求
- 当使用AJAX和mod_rewrite时,报头和POST数据消失
- 使用POST的NodeJS express认证返回错误,在发送后不能设置报头
- 在koa.js路由中发送一个带有报头的post请求