我已经完成了与使用jQuery发送标头相关的文档和谷歌链接(包括Stack Overflow),但没有一个有效。我正在使用Fiddler和FireBug检查请求,并且都没有显示自定义标头。
我对jQuery很新,所以也许所有的答案都假设我不了解包含的知识。
我的最终目标是调用RESTful服务,该服务需要用户名/密码组合在标题中(此问题的主要原因),一旦经过身份验证调用另一个Web服务以获取在新创建的cookie中使用的安全令牌,然后将用户重定向到另一个需要此安全cookie进行身份验证的站点。 (我讨厌单点登录集成)
这是我的HTML文件,其中包含(下载的)jQuery和自定义JS:
<!DOCTYPE html>
<html>
<head>
<title>Hello jQuery</title>
<script src="../js/jquery-1.11.3.js"></script>
<script src="../js/jquery.form-3.51.0.js"></script>
<script src="../js/login.js"></script>
</head>
<body>
<a href="/rest/user/authenticate" id="loginLink">click to launch</a>
</br>
</br>
<form id="loginForm" method="GET" action="/rest/user/authenticate">
User ID:<br>
<input type="text" style="width:100px;" size="16" id="user" name="user" value="" /><br>
Password:<br>
<input type="password" style="width:100px;" size="16" id="password" name="password" /><br><br>
<input style="cursor: hand" type="submit" border="0" align="middle" name="" value='Log in' /><br>
</form>
</body>
</html>
我尝试使用表单添加标题(通过一次注释一次,使用beforeSend和标题):
var frm = $('#loginForm');
frm.submit(function (ev) {
$.ajax({
url: frm.attr('action'),
type: frm.attr('method'),
dataType: "xml",
contentType: "text/plain",
beforeSend: function(xhr){xhr.setRequestHeader('BLAH', 'test-value');},
//headers: {"BLAH": "test-value"},
success: function (data) {
alert("Success");
},
error:function(){
alert("Error");
}
});
ev.preventDefault();
});
我想也许这是提交表单的一些限制,所以我也尝试通过点击链接获得自定义标题,但这也不包括标题。
$('#"loginLink"').click(function(){
event.preventDefault();
$.ajax({
url: '/rest/user/authenticate',
type: 'GET',
data: {},
contentType: 'text/plain',
//headers: {"BLAH": "test-value"},
beforeSend: function(xhr){xhr.setRequestHeader('BLAH', 'test-value');},
success: function () { },
error: function () { },
});
});
请求正在发送到我的RESTful服务,但不包含标头。
我做错了什么?
谢谢, 肖恩