JQuery AJAX 标头授权 POST
Posted
技术标签:
【中文标题】JQuery AJAX 标头授权 POST【英文标题】:JQuery AJAX Header Authorization POST 【发布时间】:2014-06-26 18:35:50 【问题描述】:我必须将 XML 发送到带有 Authorization header 的服务器,并且它必须是 POST。 p>
现在我有两个选择。
当我使用 dataType = 'jsonp' 时,它总是变成 GET 而不是 POST。我的数据也必须是 XML。
var request = ;
request.type = 'POST';
request.contentType = 'application/jsonp; charset=utf-8';
request.dataType = 'jsonp';
request.data = JSON.stringify(this.data);
request.url = this.url;
request.beforeSend = function (xhr)
xhr.setRequestHeader("Authorization", "Basic ");
;
request.processData = false;
$.ajax(request);
但是没有 dataType = 'jsonp' 我根本没有 Authentication 标头。以下代码仅适用于 Chrome。
var request = ;
request.type = 'POST';
request.contentType = 'text/xml';
request.dataType = 'xml';
request.data = this.data;
request.url = this.url;
request.beforeSend = function (xhr)
xhr.setRequestHeader("Authorization", "Basic ");
;
request.processData = false;
$.ajax(request);
是的,我知道 *** 上有很多类似的问题,我已经阅读了几十个,但仍然没有找到正确的答案。
【问题讨论】:
那么你试过什么不起作用,贴一些代码! 【参考方案1】:修改beforeSend
方法中的headers,例如:
$.ajax(
url: url,
method: "POST",
dataType: "json",
crossDomain: true,
contentType: "application/json; charset=utf-8",
data: JSON.stringify(data),
cache: false,
beforeSend: function (xhr)
/* Authorization header */
xhr.setRequestHeader("Authorization", "Basic " + Utils.getUsernamePassword());
xhr.setRequestHeader("X-Mobile", "false");
,
success: function (data)
,
error: function (jqXHR, textStatus, errorThrown)
);
【讨论】:
是的,我已经这样做了,但是当我设置 dataType = "json" 时,它变成了 GET。我做错了什么? 我编辑了答案并将 ajax 请求中的type
更改为 method
。根据jQuery.ajax documentation,type
是method
的别名。如果您使用的是 1.9.0 之前的 jQuery 版本,则应该使用 type
。
有没有办法使用$.post()
进行基本授权?以上是关于JQuery AJAX 标头授权 POST的主要内容,如果未能解决你的问题,请参考以下文章
Jquery AJAX:请求的资源上不存在“Access-Control-Allow-Origin”标头