Php HTTPS ajax请求

Php HTTPS ajax请求,php,ajax,laravel,laravel-4,laravel-routing,Php,Ajax,Laravel,Laravel 4,Laravel Routing,我最近把我的网站改为使用HTTPS。我使用Laravel作为php框架。一开始,我遇到了一个问题,我会得到一个“访问控制不允许使用Origin null Allow Origin.”错误,但后来我通过在我的filters.php中使用此错误修复了该问题: App::before(function($request) { header("Access-Control-Allow-Origin: *"); header("Access-Control-Allow-Methods: G

我最近把我的网站改为使用HTTPS。我使用Laravel作为php框架。一开始,我遇到了一个问题,我会得到一个“访问控制不允许使用Origin null Allow Origin.”错误,但后来我通过在我的filters.php中使用此错误修复了该问题:

App::before(function($request)
{
    header("Access-Control-Allow-Origin: *");
    header("Access-Control-Allow-Methods: GET, POST, OPTIONS");
});
以下是ajax请求:

    $.ajax({
            type: 'GET',
            url: '/media/search/',
            data: { 'q':search_string },
            success: function(d) { }
    });
现在,我得到的不是跨源错误,而是重定向到我的登录页面,而不是应该加载的内容。我认为这与Laravel拥有的CSRF令牌实现有关,但我不确定我应该采取何种方式将该令牌添加到请求中,或者如何修复它。有人有什么建议吗

编辑:

如果我的filter.php中没有这些头函数,则会出现以下错误:

无法加载XMLHttpRequest。不 “Access Control Allow Origin”标头出现在请求的服务器上 资源。因此,不允许使用源“” 进入

在此之后,我开始使用此电话:

$.ajax({
        type: 'GET',
        url: 'https://website.com/media/search/',
        data: { 'q':search_string },
        success: function(d) { }
});

但是仍然没有运气

如果它与CRSF相关,您可以从中删除AJAX:

Route::filter('csrf', function()
{
    if (!Request::ajax() && Session::token() != Input::get('_token'))
    {
        throw new Illuminate\Session\TokenMismatchException;
    }
});
添加
!请求::ajax()
开始时的规则。您还可以向数据中添加
\u令牌

您还应该查看
app/config/session.php
文件:

'secure' => false,

如果设置为true,并且您从http发出AJAX请求,那么它可能无法工作

您在这里没有进行跨域调用<代码>访问控制允许源代码不需要。请查看我的编辑,我不知道如何在ajax调用上强制使用https。我会在我的通话中加上,但它仍然会呼叫HttpHTTPS被认为是跨域的;对ajax调用使用相同的协议您可以发布更多的代码吗?在你的代码中,它将你重定向到哪里?它是cSrf(跨站点请求伪造)。如果是csrf过滤器引发异常,为什么他会出现在登录页面?身份验证筛选器(或某些控制器重定向)更有意义。@alou它取决于CSRF筛选器的定义方式。可以将其定义为注销用户并重定向到登录页面。感谢您的建议,但这不起作用。我仍然被重定向到登录页面。@AndrewButler我已经编辑了我的答案。您应该进行更多的调试,以了解您的目标。您使用的是检查身份验证的控制器还是过滤器。如果没有它,可能很难猜测控制器上发生了什么我在搜索控制器上有默认的auth过滤器:If(auth::guest()return Redirect::guest('/sign');但是我想如果它在会话中发出请求,它就不会是guest,不是吗?