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()
我有一个 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()