Laravel `Auth` 与第 3 方库 ajax 调用不兼容?

Laravel `Auth` not compatible with 3rd party library ajax call?

我有一个 Laravel 控制器,当用户登录时 returns 图像:

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 调用?我能做些什么来修复它吗?

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

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

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