【问题标题】:HTTPS ajax requestsHTTPS ajax 请求
【发布时间】:2014-12-01 21:04:35
【问题描述】:

我最近将我的网站切换为使用 HTTPS。我使用 Laravel 作为 php 框架。一开始我遇到了一个问题,我会得到“Access-Control-Allow-Origin 不允许 Origin null”。错误,但后来我通过在我的 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 无法加载 http://website.com/media/search?&q=500。不 请求中存在“Access-Control-Allow-Origin”标头 资源。因此不允许使用原点“https://website.com” 访问。

在此之后,我继续使用此调用:

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

但仍然没有运气

【问题讨论】:

  • 您不是在此处进行跨域调用。 Access-Control-Allow-Origin 不是必需的。
  • 请看我的编辑,我不知道如何在 ajax 调用上强制 https。我会在我的电话中输入website/search',但它仍然会调用http
  • http https被认为是跨域的;对 ajax 调用使用相同的协议
  • 你能再贴一些代码吗?它在您的代码中将您重定向到哪里?

标签: php ajax laravel laravel-4 laravel-routing


【解决方案1】:

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

Route::filter('csrf', function()
{
    if (!Request::ajax() && Session::token() != Input::get('_token'))
    {
        throw new Illuminate\Session\TokenMismatchException;
    }
});

在开头添加!Request::ajax() 规则。您还可以将_token 添加到您的数据中。

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

'secure' => false,

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

【讨论】:

  • 这是 cSrf(跨站请求伪造)。如果是csrf过滤器抛出异常,为什么他会出现在登录页面?身份验证过滤器(或某些控制器重定向)会更有意义。
  • @alou 这取决于 CSRF 过滤器是如何定义的。可以定义注销用户并重定向到登录页面。
  • 感谢您的建议,但这不起作用。我仍然被重定向到登录页面。
  • @AndrewButler 我已经编辑了我的答案。您应该进行更多调试以了解您的去向。你进入一个检查身份验证的控制器还是一个过滤器。没有它可能很难猜测发生了什么
  • 在控制器上我在搜索控制器上有默认的身份验证过滤器: If(Auth::guest() return Redirect::guest('/signin'); 但我认为它不会是如果是通过会话发出请求的客人,不是吗?
猜你喜欢
  • 2013-02-28
  • 1970-01-01
  • 2012-11-13
  • 1970-01-01
  • 1970-01-01
  • 2012-11-15
  • 2012-05-01
  • 1970-01-01
相关资源
最近更新 更多