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-Origin
tiê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ý OPTIONS
yê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-Origin
khớ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.origin
khô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.com
và 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 Origin
tiêu đề chữ thường ):
curl -v -X OPTIONS --http1.1 -H 'Origin: https://www.example.com' https:
Nếu Access-Control-Allow-Origin
tiêu đề bị thiếu, bạn có thể muốn kiểm tra phân biệt chữ hoa chữ thường khi đọc Origin
tiêu đề.
Bucket Policy
? Đảm bảo rằng bạn có phương pháp trong chính sách của mình