Một nguyên nhân gốc rễ khác của vấn đề này có thể là sự khác biệt giữa HTTP / 1.1 và HTTP / 2.
Dấu hiệu: Một số người dùng, không phải tất cả, đã báo cáo gặp lỗi CORS khi sử dụng Phần mềm của chúng tôi.
Vấn đề: Các Access-Control-Allow-Origintiêu đề đã mất tích đôi khi .
Bối cảnh: Chúng tôi đã có một Lambda tại chỗ, chuyên xử lý OPTIONSyêu cầu và trả lời với các tiêu đề CORS tương ứng, chẳng hạn như Access-Control-Allow-Originkhớp với một danh sách trắng Origin.
Giải pháp: API Gateway dường như chuyển đổi tất cả các tiêu đề thành chữ thường cho các cuộc gọi HTTP / 2, nhưng vẫn duy trì cách viết hoa cho HTTP / 1.1. Điều này khiến việc truy cập event.headers.originkhông thành công.
Kiểm tra xem bạn có đang gặp sự cố này không:
Giả sử API của bạn được đặt tại https://api.example.comvà giao diện người dùng của bạn ở https://www.example.com. Sử dụng CURL, đưa ra yêu cầu bằng HTTP / 2:
curl -v -X OPTIONS -H 'Origin: https://www.example.com' https:
Đầu ra phản hồi phải bao gồm tiêu đề:
< Access-Control-Allow-Origin: https://www.example.com
Lặp lại bước tương tự bằng cách sử dụng HTTP / 1.1 (hoặc với Origintiêu đề chữ thường ):
curl -v -X OPTIONS --http1.1 -H 'Origin: https://www.example.com' https:
Nếu Access-Control-Allow-Origintiêu đề bị thiếu, bạn có thể muốn kiểm tra phân biệt chữ hoa chữ thường khi đọc Origintiêu đề.
Bucket Policy? Đảm bảo rằng bạn có phương pháp trong chính sách của mình