Apache 和 Headers 存在以响应 Ajax 请求
Posted
技术标签:
【中文标题】Apache 和 Headers 存在以响应 Ajax 请求【英文标题】:Apache and Headers presence in response for Ajax requests 【发布时间】:2014-08-27 22:02:38 【问题描述】:我试图找出一个跨域 API 问题。 我有一个使用 Sencha Touch 2.3.1 创建的应用程序,它使用 Ajax 从远程服务器获取数据。 我面临的问题是针对本地服务器的所有 Ajax 请求都不包含响应的所有标头。 在远程服务器上,一切正常,标头也正常。
这里有两个打印件,分别显示每个服务器发送和接收的标头
1 - 从 localhost (http://local.api - vhost) 发送和接收的标头
收到的标头:
Connection Keep-Alive
Content-Length 274
Content-Type text/html; charset=iso-8859-1
Date Mon, 07 Jul 2014 10:58:54 GMT
Keep-Alive timeout=5, max=100
Location http://local.api/fa/?ref.agent/lista-clienti&_dc=1404730734262
Server Apache/2.2.17 (Win32) php/5.3.3
发送的标头:
Accept text/html,application/xhtml+xml,
application/xml;q=0.9,*/*;q=0.8
Accept-Encoding gzip, deflate
Accept-Language ro-ro,ro;q=0.8,en-us;q=0.6,en-gb;q=0.4,en;q=0.2
Content-Length 33
Content-Type application/x-www-form-urlencoded; charset=UTF-8
Host local.api
Origin http://sencha.local
Referer http://sencha.local/fisa-agenti/index.html
User-Agent Mozilla/5.0 (Windows NT 6.1; WOW64; rv:30.0) Gecko/20100101
Firefox/30.0
2 - 从远程服务器发送和接收的标头 (http://adgarage.ro)
收到的标头
Accept-Ranges bytes
Access-Control-Allow-Cred... true
Access-Control-Allow-Orig... *
Age 0
Connection keep-alive
Content-Length 375
Content-Type application/json
Date Mon, 07 Jul 2014 10:58:52 GMT
Server Apache/2.2.22 (Unix) mod_ssl/2.2.22
OpenSSL/0.9.8e-fips-rhel5
Via 1.1 varnish
X-Powered-By PHP/5.3.13
X-Varnish 562862498
已发送标题
Accept text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Encoding gzip, deflate
Accept-Language ro-ro,ro;q=0.8,en-us;q=0.6,en-gb;q=0.4,en;q=0.2
Host adgarage.ro
Origin http://sencha.local
Referer http://sencha.local/fisa-agenti/index.html
User-Agent Mozilla/5.0 (Windows NT 6.1; WOW64; rv:30.0) Gecko/20100101
Firefox/30.0
注意Access-Controll-Allow
标头。
从localhost
收到的标头容器中缺少它
这是我的.htaccess
文件:
Header set Access-Control-Allow-Origin *
Header set Access-Control-Allow-Credentials: true
此文件在两台服务器上相同。
我在本地机器上有 headers_module
活动。
我注意到的另一件事是来自本地的响应状态是301 moved Permanently
,而从远程服务器收到的响应状态是200 Ok
我错过了什么?
谢谢!
【问题讨论】:
【参考方案1】:我已经确定了问题所在。
正如this topic 中所讨论的,由于301 Moved Permanently
状态,未发送标头。
我的本地请求是发给http://local.api/fa?ref.agent/...
而不是http://local.api/fa/?ref.agent/...
- 请注意第一个链接中/fa
后面缺少的斜杠。
现在一切正常。
【讨论】:
以上是关于Apache 和 Headers 存在以响应 Ajax 请求的主要内容,如果未能解决你的问题,请参考以下文章
aiohttp 异步http请求-11.ClientResponse 获取响应headers 和cookies
如何设计一种分治算法来检查数组中是不是存在一对ai,aj使得ai-aj = M?