【问题标题】:Laravel `Auth` not compatible with 3rd party library ajax call?Laravel `Auth` 与 3rd 方库 ajax 调用不兼容?
【发布时间】:2019-12-04 16:48:45
【问题描述】:

我有一个 Laravel 控制器,它会在用户登录时返回一个图像:

public function show($file)
{

   $path = storage_path('app/files/' . basename($file));

   if(!\Auth::check() || !\File::exists($path) return back();

   return response()->file($path);
}

当我在浏览器中输入my-domain.com/show/image.png 时,图像会在我登录时显示。

当我登录并使用简单的 jQuery ajax 调用时,它也可以工作:

$.get('https://my-domain.com/show/image.png', '', function(data){
   console.log('success');
   console.log(data);
}

但是,当我记录它并通过 DYMO JS Framework 3.0 (Docs) 使用 ajax 调用时,它突然不再工作了。

更准确地说,当我打电话时

 dymo.label.framework.loadImageAsPngBase64('https://my-domain.com/show/image.png');

我收到一个错误,即没有返回图像。当我在控制器中删除 !\Auth::check() 时,它就可以工作了。

为什么Auth 不能与第 3 方库 ajax 调用一起使用?有什么我可以解决的吗?

【问题讨论】:

    标签: ajax laravel authorization dymo


    【解决方案1】:

    问题可能是dymo 框架没有将会话 cookie 作为请求的一部分发送,因此 Laravel 无法确定登录用户。

    如果dymo 框架不支持向请求中添加额外的标头或数据(看起来不像),您需要在 javascript 的其他位置加载图像。

    例如,您可以使用axios 或其他HTTP 客户端来获取图像,然后对其进行base64 编码并将其传递给dymo.label.framework.loadImageAsPngBase64()

    【讨论】:

    猜你喜欢
    • 2012-07-16
    • 1970-01-01
    • 2014-05-25
    • 2021-10-09
    • 1970-01-01
    • 2021-06-03
    • 2013-07-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多