我有一个 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 调用一起使用?我能做些什么来解决它吗?
问题可能是
dymo
框架没有将会话 cookie 作为请求的一部分发送,因此 Laravel 无法确定登录的用户。
如果
dymo
框架不支持向请求添加额外的标头或数据(看起来并不支持),您需要在 javascript 中的其他位置加载图像。
例如,您可以使用
axios
或其他HTTP客户端来获取图像,然后对其进行base64编码并将其传递给dymo.label.framework.loadImageAsPngBase64()
当我尝试打印它时,我需要你的帮助,给我 CORS 错误