我想使用jquery ajax(带有自定义标头)从客户端调用web服务。我差不多这样做了。我将access-Control-Allow-Origin设置为force.com和salesforce.com,因为我正在调用salesforce的web服务。
当我尝试在没有自定义标头的情况下调用该API时,它会获得响应,就像我使用标头调用时一样,它没有得到响应。
使用自定义标题
jQuery.ajax({
type: 'POST',
contentType: 'application/x-www-form-urlencoded',
url: 'https://xxx.myclient.com/xxx/xxx/register',
beforeSend: function(xhr) {
xhr.setRequestHeader('orgid', '00D90000000oxxxx');
xhr.setRequestHeader('userid', '00590000001Dxxxxxx');
},
success: function(response) {
alert('success' + JSON.stringify(response));
},
error: function(jqXHR, textStatus) {
alert('jqXHR : ' + JSON.stringify(jqXHR) + ' textStatus : ' + textStatus);
}
});
也试过
jQuery.ajax({
type: 'POST',
contentType: 'application/x-www-form-urlencoded',
url: 'https://xxx.myclient.com/xxx/xxx/register',
headers: {
"orgid": "00D90000000oxxxx",
"userid": "00590000001Dxxxxxx",
},
success: function(data) {
alert(JSON.stringify(data));
},
error: function(jqXHR, textStatus) {
alert('jqXHR : ' + JSON.stringify(jqXHR) + ' textStatus : ' + textStatus);
}
});
但在上述两种情况下,它都没有命中服务器并收到错误消息
当我没有使用任何标题时,它就会点击服务器
jQuery.ajax({
type: 'POST',
contentType: 'application/x-www-form-urlencoded',
url: 'https://xxx.myclient.com/xxx/xxx/register',
success: function(response) {
alert('success' + JSON.stringify(response));
},
error: function(jqXHR, textStatus) {
alert('jqXHR : ' + JSON.stringify(jqXHR) + ' textStatus : ' + textStatus);
}
});
获得成功回应
在回复标题中显示
Access-Control-Allow-Headers: Content-Type
只有内容类型,这是问题吗? 我们是否需要在此处添加自定义标题?
当我使用firefox firebug分析网络时,它显示如下
我不知道为什么会发生这种情况
任何人都可以提供帮助。
先谢谢.. :))
答案 0 :(得分:3)
尝试在您正在呼叫的服务的“Access-Control-Allow-Headers”列表中添加自定义标头(orgId和userId)。