交叉原点'授权'-带有jquery.ajax()的头
cross-origin 'Authorization'-header with jquery.ajax()
我正在尝试发送一个跨源域并添加一个自定义的"Authorization"-标头。请参阅下面的代码。
错误:
XMLHttpRequest无法加载{url}。访问控制允许标头不允许请求标头字段"授权"。
function loadJson(from, to) {
$.ajax({
//this is a 'cross-origin' domain
url : "http://localhost:2180/api/index.php",
dataType : 'json',
data : { handler : "statistic", from : from, to : to
},
beforeSend : setHeader,
success : function(data) {
alert("success");
},
error : function(jqXHR, textStatus, errorThrown) {
alert("error");
}
});
}
function getToken() {
var cookie = Cookie.getCookie(cookieName);
var auth = jQuery.parseJSON(cookie);
var token = "Token " + auth.id + ":" + auth.key;
}
function setHeader(xhr) {
xhr.setRequestHeader('Authorization', getToken());
}
我也试过:
headers : { 'Authorization' : getToken() },
在ajax请求中。
可能是jquery ajax框架阻止了跨源身份验证吗?我该怎么解决这个问题?
更新:
顺便问一下:有没有一种更安全的方法将auth.key存储在客户端,然后存储在cookie中?getToken()将被替换为一个更复杂的方法,对正文、日期等进行哈希处理。
这是一个发出CORS请求的示例。如果您有权访问服务器(我认为您有权这样做,因为这是对localhost的请求),您将需要添加CORS特定的响应标头。最简单的方法是添加以下响应头:
Access-Control-Allow-Origin: *
Access-Control-Allow-Methods: GET, POST, PUT, DELETE
Access-Control-Allow-Headers: Authorization
您的服务器还需要配置为响应HTTP OPTIONS请求。您可以在此处了解有关提出CORS请求的更多信息:http://www.html5rocks.com/en/tutorials/cors/
相关文章:
- 在FrontEndphp-ajax-jquery中验证reCaptcha-google
- AJAX jquery json将数组发送到php
- 如何使用Ajax/jQuery设置cookie
- PHP/Ajax/jquery/JON-在Ajax Post之后将echo文本中的一部分作为变量返回
- 如何使用Ajax JQuery.ech()获取JSON值
- 使用springform时,如何在ajax/jquery中获取复选框值
- JSP AJAX jQuery填充表问题
- Piping Value: Ajax + JQuery
- 使用javascript Without Ajax/Jquery在特定行中启用文本框
- 在AJAX jQuery加载()之后运行jQuery代码
- 具有动态更新的实时标题 (AJAX+jQuery)
- ajax/jQuery Youtube 播放列表推送
- AJAX jQuery Avatar Uploading
- 全局变量 - AJAX jQuery
- Ajax jquery mysqli update
- 获取剩余时间和上传文件速度 - ajax jquery/js
- 使用ajax/jquery绑定Json数据
- TypeError Obj.root是未定义的ajax jquery
- 当数据类型为XML时,如何将url参数传递给AJAX jquery
- 在ajax Jquery之后无法获取隐藏字段的值