【问题标题】:HTTP headers not working in $.AJAX callHTTP 标头在 $.AJAX 调用中不起作用
【发布时间】:2016-06-20 16:02:10
【问题描述】:

无论我尝试使用哪种方法在 AJAX 调用中设置标头,也无论我设置哪个标头,每次如果有标头,我的 AJAX 调用都会中止,并且调用不会通过,因为我需要设置授权头,如果没有头,调用返回401。

<!DOCTYPE html>
<html>
<head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.2/jquery.min.js"></script>
<script>
$(document).ready(function(){
    $("button").click(function(){

var authorizationToken=1;
$.ajax
({
type: "GET",
url: "http://<someURL>?$format=json",
beforeSend: function (request)
            {
                request.setRequestHeader("Authority", authorizationToken);
            },
success: function (){
  alert('Thanks for your comment!');
},
error: function (a,b,c,d){
  alert('Try again please');
}
});
});
});
</script>
</head>
<body>

<button>Send an HTTP GET request to a page and get the result back</button>

</body>
</html>

如果不存在标头,则不会中止调用并返回 401。你能告诉我 AJAX 调用有什么问题吗?由于这适用于具有相同服务器的 rest 客户端,我认为这不是服务器问题。

【问题讨论】:

  • 请求是否通过服务器?你能用 Fiddler 之类的东西看到它吗? (请记住,您无法使用 fiddler 看到 localhost 请求,因此您的客户端和服务器将需要在 2 个不同的主机上运行)。
  • 在浏览器中使用开发者工具。查看控制台,它是否显示任何错误消息?查看网络选项卡,发送的请求是您期望的吗?我现在赌的是违反同源政策。
  • 在开发控制台中,不显示任何请求,在调试模式下,它会出现参数错误:状态:0,状态文本:“错误”第二个参数:“错误”第三个参数:“”没有请求正在进入网络选项卡,但是当根本没有标题时它会出现。

标签: javascript jquery ajax http get


【解决方案1】:

您的意思是设置Authorization 标头而不是Authority

【讨论】:

  • 是的,正如我之前所说的,它是授权,这里它的授权只是为了显示代码,问题是即使我通过了授权,也会发生同样的问题,没有调用。
猜你喜欢
  • 1970-01-01
  • 2017-07-27
  • 2018-07-24
  • 2012-07-18
  • 2017-05-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-12-02
相关资源
最近更新 更多