Firefox中带有自定义头的Javascript Dojo AJAX(XHR)请求
我试图使用从服务器获取一些XML数据来发出请求。我正在使用Dojo1.4.0 服务器要求我通过名为Firefox中带有自定义头的Javascript Dojo AJAX(XHR)请求,javascript,ajax,firefox,dojo,xmlhttprequest,Javascript,Ajax,Firefox,Dojo,Xmlhttprequest,我试图使用从服务器获取一些XML数据来发出请求。我正在使用Dojo1.4.0 服务器要求我通过名为Myauthtoken的自定义HTTP头传递凭据 在狩猎中一切都很好。代码弹出一个对话框,显示[对象文档]。但在Firefox中,对话框显示null。在进程的某个地方,自定义头被删除或损坏,服务器不接受它 相关代码如下所示: dojo.xhrGet({ url: 'https://host.com/path/to/thing?param1=one¶m2=two', heade
Myauthtoken
的自定义HTTP头传递凭据
在狩猎中一切都很好。代码弹出一个对话框,显示[对象文档]
。但在Firefox中,对话框显示null
。在进程的某个地方,自定义头被删除或损坏,服务器不接受它
相关代码如下所示:
dojo.xhrGet({
url: 'https://host.com/path/to/thing?param1=one¶m2=two',
headers: {
'Myauthtoken': 'username:password'
},
handleAs: 'xml',
load: function(response) {
alert(response);
},
error: function(e) {
alert("error: " + e);
}
});
在Firefox中,Firebug显示以下请求头:
主机:Host.com用户代理:Mozilla/5.0(Macintosh;U;Intel Mac OS X 10.5;en-US;rv:1.9.1.7)Gecko/20091221 Firefox/3.5.7
接受:text/html、application/xhtml+xml、application/xml;q=0.9,/;q=0.8
接受语言:en us,en;q=0.5
接受编码:gzip,放气
接受字符集:ISO-8859-1,utf-8;q=0.7,*;q=0.7
保持活力:300
连接:保持活动状态
来源:null
访问控制请求方法:获取
访问控制请求头:myauthtoken,x-requested-with 服务器用403(禁止)和以下响应头进行响应: 日期:2010年1月28日星期四20:02:47 GMT
服务器:Noelios Restlet引擎/1.0.6
内容类型:text/html;字符集=ISO-8859-1
内容长度:337
连接:关闭
更新强> 我一直在研究,问题似乎是Firefox正在尝试,而Safari没有,而是只发送自定义标题,而不先检查它们是否有效 我还发现: 缓存控制:最大年龄=0
内容类型:应用程序/x-www-form-urlencoded
Myauthtoken:用户名:密码
用户代理:Mozilla/5.0(Macintosh;U;英特尔Mac OS X 10_5_8;en-us)AppleWebKit/531.21.8(KHTML,类似Gecko)版本/4.0.4 Safari/531.21.10 和响应标题: 缓存控制:无存储
连接:关闭
内容长度:236391
内容类型:应用程序/xml;字符集=ISO-8859-1
日期:2010年1月29日星期五23:02:22 GMT
服务器:Noelios Restlet引擎/1.0.6 主要区别在于
内容长度:235391
不幸的是,我离真正找到解决方案还差得远——仍然在寻找一些好的想法,或者任何想法
你有没有想过发生了什么事,我该怎么处理
谢谢 对于自定义标题,我认为您需要使用
X-
前缀:
X-Myauthtoken:用户名:密码
服务器也需要接受它,因为它是一个非标准的头。经过进一步研究,问题似乎是服务器希望头区分大小写,而Firefox正在将头转换为小写 Firefox正在发送
myauthtoken
,而服务器需要myauthtoken
最后,我们使用了一段代码,默认为区分大小写,而不是
注意区分大小写的标题 在什么情况下需要
X-
前缀?它适用于狩猎和卷发。这只是在Firefox中吗?你知道任何文件吗?
headers: {
'X-Myauthtoken': 'username:password'
},