Php HTTPS ajax请求
我最近把我的网站改为使用HTTPS。我使用Laravel作为php框架。一开始,我遇到了一个问题,我会得到一个“访问控制不允许使用Origin null Allow Origin.”错误,但后来我通过在我的filters.php中使用此错误修复了该问题: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
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,不是吗?