Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Firefox中带有自定义头的Javascript Dojo AJAX(XHR)请求_Javascript_Ajax_Firefox_Dojo_Xmlhttprequest - Fatal编程技术网

Firefox中带有自定义头的Javascript Dojo AJAX(XHR)请求

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&param2=two', heade

我试图使用从服务器获取一些XML数据来发出请求。我正在使用Dojo1.4.0

服务器要求我通过名为
Myauthtoken
的自定义HTTP头传递凭据

在狩猎中一切都很好。代码弹出一个对话框,显示
[对象文档]
。但在Firefox中,对话框显示
null
。在进程的某个地方,自定义头被删除或损坏,服务器不接受它

相关代码如下所示:

dojo.xhrGet({
  url: 'https://host.com/path/to/thing?param1=one&param2=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'
  },