Storage engine: Aliyun OSS
Trình quản lý tệpCommunity Edition+Storage engine dựa trên Aliyun OSS, cần chuẩn bị tài khoản và quyền liên quan trước khi sử dụng.
Engine này không hỗ trợ truy cập riêng tư. Sau khi file được upload, NocoBase tạo URL có thể truy cập trực tiếp, và bất kỳ ai có URL đó đều có thể truy cập file.
Ngay cả khi bucket OSS được cấu hình riêng tư, engine Aliyun OSS tích hợp sẵn cũng không tạo URL ký tạm thời để truy cập file. Nếu cần truy cập riêng tư, hãy dùng S3 Pro. Nếu đã có file lịch sử, hãy xem Di chuyển sang S3 Pro.
Tham số cấu hình

Chỉ giới thiệu các tham số dành riêng cho storage engine Aliyun OSS. Đối với các tham số chung, vui lòng tham khảo Tham số chung của engine.
Base URL
Điền prefix URL truy cập file, chẳng hạn custom domain đã liên kết với bucket hiện tại: https://oss.example.com. Khi truy cập PDF qua domain mặc định của Aliyun OSS, trình duyệt có thể tải file xuống. Nên liên kết custom domain trước. Xem Các vấn đề thường gặp bên dưới để biết chi tiết.
Region
Điền Region của OSS, ví dụ: oss-cn-hangzhou.
Có thể xem thông tin Region của Bucket tại Aliyun OSS Console, chỉ cần lấy phần tiền tố Region (không cần tên miền đầy đủ).
AccessKey ID
Điền ID của khóa truy cập được ủy quyền của Aliyun.
AccessKey Secret
Điền Secret của khóa truy cập được ủy quyền của Aliyun.
Bucket
Điền tên Bucket của OSS.
Timeout
Điền thời gian timeout khi upload lên Aliyun OSS, đơn vị mili giây, mặc định là 60000 ms (tức 60 giây).
Các vấn đề thường gặp
PDF bị download thay vì được preview
NocoBase preview PDF khác origin trong iframe. Trình duyệt truy cập trực tiếp URL file trên OSS, vì vậy response header của OSS quyết định file được hiển thị hay download.
Nếu PDF bị download từ iframe, hãy kiểm tra request file trong panel Network của developer tools. Response có vấn đề thường có dạng:
Content-Type: application/pdf xác định đúng loại file, nhưng Content-Disposition: attachment yêu cầu trình duyệt tải file xuống. Domain mặc định của Aliyun OSS buộc download trong một số trường hợp. Xem tài liệu chính thức: Cấu hình PDF để preview thay vì download.
Nên cấu hình như sau:
- Làm theo Truy cập tài nguyên OSS qua custom domain để liên kết domain với bucket
- Cấu hình DNS và chứng chỉ HTTPS, sau đó xác nhận custom domain có thể truy cập trực tiếp file
- Cấu hình URL truy cập cho storage engine NocoBase đang sử dụng
Đối với bước 3:
- Với engine Aliyun OSS tích hợp sẵn, đặt Base URL thành custom domain đã liên kết, chẳng hạn
https://oss.example.com - Với S3 Pro kết nối tới Aliyun OSS, upload endpoint có thể tiếp tục dùng endpoint OSS theo Region; đặt access endpoint thành custom domain và đặt
Full access URL stylethànhIgnore
Upload một PDF mới để kiểm tra cấu hình. Nếu record file cũ lưu URL đầy đủ, hãy xác nhận URL trả về frontend đã chuyển sang custom domain.
Preview PDF khác origin trong iframe không cần CORS. Việc PDF có hiển thị inline hay không chủ yếu phụ thuộc vào Content-Type và Content-Disposition. Đây là vấn đề khác với yêu cầu CORS của nút download bên dưới.
Hình ảnh preview bình thường nhưng nút download báo lỗi CORS
Hình ảnh thường được preview bằng <img>, còn PDF khác origin được preview bằng iframe. Cả hai đều có thể hiển thị resource mà không cần CORS response header. Tuy nhiên, nút download đọc file bằng fetch rồi tạo Blob. Request này chịu sự kiểm soát của same-origin policy trong trình duyệt.
Lỗi sau có nghĩa là OSS không trả về Access-Control-Allow-Origin cho site NocoBase hiện tại:
Làm theo hướng dẫn chính thức Cấu hình CORS và tạo rule cho bucket. Đối với download từ component preview, có thể dùng các giá trị sau:
Nếu S3 Pro cũng upload file trực tiếp từ trình duyệt, hãy thêm các method như PUT và POST theo request upload thực tế trong panel Network, hoặc tạo rule upload riêng.
Sau khi lưu rule, hãy request lại file với origin của site NocoBase. Response ít nhất phải chứa:
Trình duyệt có thể đã cache response dùng để preview hình ảnh. Request đó không có header Origin, và response trong cache có thể không chứa Access-Control-Allow-Origin. Nếu download vẫn thất bại sau khi cấu hình CORS, hãy xóa cache của file hoặc bật Disable cache trong developer tools rồi thử lại.
Kiểm tra response header
Dùng curl để mô phỏng request khác origin từ site NocoBase. Thay origin, URL file và tham số signature trong ví dụ bằng giá trị thực tế:
Kiểm tra các kết quả sau:
- Preview PDF trả về
Content-Type: application/pdfvà không cóContent-Disposition: attachment - Download khác origin trả về
Access-Control-Allow-Originkhớp với site NocoBase - URL file thực tế dùng custom domain thay vì domain mặc định
*.oss-cn-*.aliyuncs.com
Request không có header Origin mà không nhận được CORS response header là bình thường. Khi kiểm tra CORS, hãy giữ header Origin trong ví dụ.

