ajax - 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 调用?有什么我可以解决的吗?
解决方案
问题可能是dymo
框架没有将会话 cookie 作为请求的一部分发送,因此 Laravel 无法确定登录用户。
如果dymo
框架不支持向请求添加额外的标头或数据(看起来不像),您需要在 javascript 的其他位置加载图像。
例如,您可以使用axios
或其他 HTTP 客户端来获取图像,然后对其进行 base64 编码并将其传递给dymo.label.framework.loadImageAsPngBase64()
推荐阅读
- search - 有没有办法创建一个保存的搜索来查找延期交货的装配项目的可建造数量
- javascript - 加入后在 Discord 上 PMing 成员
- html - 在我的 asp.net mvc 核心 Web 应用程序中的同一行显示 Lebel 和 CheckBox
- c# - 我可以创建一个网格(醒着)但我看不到它
- javascript - JEST 测试 try catch - 获取错误消息
- python - 超类中子类的自动初始化
- javascript - 为什么“for循环”中的“for in”不能用每个对象值更改表单元素中的每个输入值
- c# - 使用另一个类的布尔值
- javascript - 返回 Nuxt 中调用事件监听器的元素
- python-3.x - TKInter - 对帧和滚动感到困惑