首页 > 解决方案 > Laravel `Auth` 与 3rd 方库 ajax 调用不兼容?

问题描述

我有一个 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不使用 3rd 方库 ajax 调用?有什么我可以解决的吗?

标签: ajaxlaravelauthorizationdymo

解决方案


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

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

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


推荐阅读