【问题标题】:laravel ajax "Access to restricted URI denied" in post request发布请求中的laravel ajax“拒绝访问受限URI”
【发布时间】:2016-02-18 11:34:32
【问题描述】:

我正在使用 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"

【问题讨论】:

    标签: php ajax http laravel-5


    【解决方案1】:

    您不能将 ajax 数据发送到像 http://username:password@website.com/APIs/public/login 这样的 URL 这个 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 (){
            ...
        }
    });
    

    【讨论】:

    • 如何生成 _token
    • @AshrafHefny 在您的HTML 中,您必须生成令牌。将此添加到您的 HTMLform 以生成令牌,然后将此令牌与您的 ajax 数据一起发送:&lt;input type="hidden" name="_token" value="{{ csrf_token() }}"&gt;
    • @AshrafHefny 也看到这个:stackoverflow.com/questions/32738763/…
    • 我已经生成_token 并使用post 数组发送它,但仍然是同样的错误
    • Ajax 重新加载页面没有任何错误或警告成功消息
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-24
    • 2010-09-08
    • 2012-03-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多