我一直在浏览tutorial
从终端cURL请求一切正常但我在使用jQuery时获得了一个用于身份验证的弹出窗口。有没有办法阻止此弹出窗口并将登录凭据从jQuery传递给API?究竟是什么 - 用户从终端工作,我如何模拟"这来自jQuery?
终端:
$ curl --user username:password http://localhost/api/v1/email
{"error":false,"authEmail":"me@localhost","message":"request success"}
Laravel控制器方法:
public function index() {
return Response::json(array(
'error' => false,
'authEmail' => Auth::user()->email,
'message' => 'request success'), 200);
}
Laravel过滤器:
Route::filter('auth.basic', function() {
return Auth::basic('username');
});
Laravel路线:
Route::group(array('prefix' => 'api/v1', 'before' => 'auth.basic'), function() {
Route::resource('email', 'EmailController');
});
jQuery的:
(function($) {
$(document).ready(function() {
$.ajax({
url: 'http://localhost/api/v1/email',
type: 'GET',
dataType: 'json',
data: {
username: 'username',
password: 'password'
}
}).complete(function(data) {
console.log(data.responseJSON);
});
});
})(jQuery);
答案 0 :(得分:1)
您可以使用beforeSend回调添加身份验证信息:
(function($) {
$(document).ready(function() {
ajax({
url: 'http://localhost/api/v1/email',
type: 'GET',
dataType: 'json',
beforeSend: function(xhr) { xhr.setRequestHeader(
"Authorization",
"Basic " + btoa('username' + ":" + 'password')); }
})
.complete(function(data) {console.log(data.responseJSON)})
});
})(jQuery);
答案 1 :(得分:-2)
您可以为jQuery ajax请求添加用户名和密码设置:
$.ajax({
url: 'http://localhost/api/v1/email',
type: 'GET',
dataType: 'json',
username: 'username',
password: 'password'
}).complete(function(data) {
console.log(data.responseJSON);
});
我认为这应该有用。