【发布时间】: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