我正在使用laravel 5.2,并尝试将请求发布到外部网站
我的 ajax 是:
$("#userLogin").click(function(){
var usrEmail = $("#usr_email").val();
var usrPassword = $("#usr_password").val();
$.ajax({
xhrFields: {
withCredentials: true
},
url: 'http://username:password@website.com/APIs/public/login',
data: {email: usrEmail, password:usrPassword},
type: 'GET',
error: function (request, error) {
console.log(arguments);
},
success: function(data) {
alert(data);
}
});
event.preventDefault();
});
在.htaccess
文件中
<IfModule mod_headers.c>
Header set Access-Control-Allow-Origin "*"
Header set Access-Control-Allow-Credentials true
</IfModule>
但是我收到此错误
"NS_ERROR_DOM_BAD_URI: Access to restricted URI denied"
您不能将 ajax 数据发送到类似 http://username:password@website.com/APIs/public/login
此 URL 似乎使用基本身份验证。因此,您需要使用 beforeSend 回调来添加带有身份验证信息的 HTTP 标头:
var username = $("input#username").val();
var password = $("input#password").val();
function make_base_auth(user, password) {
var tok = user + ':' + password;
var hash = btoa(tok);
return "Basic " + hash;
}
$.ajax
({
type: "GET",
url: "http://website.com/APIs/public/login",
dataType: 'json',
async: false,
data: '{YOUR DATA + LARAVEL _token}',
beforeSend: function (xhr){
xhr.setRequestHeader('Authorization', make_base_auth(username, password));
},
success: function (){
...
}
});