Điểm:0

"CORS Nhiều nguồn gốc không được phép" - sử dụng máy chủ phân tích cú pháp và apache2

lá cờ gi

Tôi đang sử dụng apache2 làm proxy ngược cho máy chủ phân tích cú pháp của mình. Để cho phép Yêu cầu nguồn gốc chéo, ban đầu tôi đã thử cài đặt:

Tiêu đề luôn đặt Kiểm soát truy cập-Cho phép-Xuất xứ "*"

trong tệp cấu hình apache cùng với:

ProxyPass /parse/ http://localhost:1337/parse/
ProxyPassReverse /parse/ http://localhost:1337/parse/
Viết LạiEngine Trên
RewriteCond %{REQUEST_METHOD} OPTIONS
Quy tắc viết lại ^(.*)$ $1 [R=200,L]

Sau khi thiết lập điều này, các yêu cầu đã được chuyển tiếp thành công từ apache đến máy chủ phân tích cú pháp của tôi. Tuy nhiên, bây giờ Webapp của tôi ném CORS Nhiều nguồn gốc không được phép.

Trong bảng điều khiển dành cho nhà phát triển của trình duyệt, tôi có thể thấy rằng tùy chọn Kiểm soát truy cập-Cho phép-Xuất xứ này được đặt hai lần.

nhập mô tả hình ảnh ở đây

Tôi đã xác nhận rằng phiên bản thứ hai của điều này xuất hiện do máy chủ phân tích cú pháp. Tuy nhiên, tôi không thể tìm ra cách ngăn máy chủ phân tích cú pháp hoặc apache đặt tùy chọn này trong phản hồi.

Tôi đã thử thay đổi dòng ban đầu của mình trong cấu hình apache thành:

1.

Tiêu đề luôn được đặt còn trống Access-Control-Allow-Origin "*"
Tiêu đề luôn thêm Access-Control-Allow-Origin "*"
Tiêu đề luôn thêm Access-Control-Allow-Origin "*"
Tiêu đề luôn chỉnh sửa Access-Control-Allow-Origin "^$" "*"

Không ai trong số những nỗ lực thay đổi bất cứ điều gì. Tuy nhiên loại bỏ các Kiểm soát truy cập-Cho phép-Xuất xứ tùy chọn trong cấu hình apache ngăn yêu cầu ban đầu chuyển đến máy chủ phân tích cú pháp, vì vậy đây không phải là một tùy chọn.

Tôi đang sử dụng phiên bản apache2 2.4.29 và máy chủ phân tích cú pháp 4.10.3.

Có ai biết một cách để có được điều này để làm việc?

Điểm:2
lá cờ cn

Trước hết, tôi nghĩ điều quan trọng là phải hiểu một chút nền tảng về cách thức hoạt động của CORS:

  • CORS được trình duyệt xác thực phía máy khách.
  • Để xác minh rằng một nguồn gốc (miền, giao thức hoặc cổng khác) được phép truy cập một nguồn gốc khác yêu cầu trước chuyến bay có thể được phát hành trước yêu cầu Cross-Origin thực sự. Yêu cầu này sử dụng phương thức TÙY CHỌN và cần chứa Kiểm soát truy cập tiêu đề trong phản hồi.

Vậy tại sao tôi lại nói điều này: Tôi nghi ngờ lý do bạn cần đặt Kiểm soát truy cập-Cho phép-Xuất xứ tiêu đề trong Apache để yêu cầu được "thông qua" là cấu hình Apache của bạn không được ủy quyền TÙY CHỌN yêu cầu. Điều này dẫn đến việc trình duyệt nhận được phản hồi không mong muốn trong các yêu cầu trước chuyến bay và đưa ra lỗi CORS trước khi cố gắng thực hiện yêu cầu thực tế.

Vì CORS được xác thực trong trình duyệt nên proxy ngược của Apache sẽ không đóng bất kỳ vai trò nào trong đó.Khi máy chủ phụ trợ của bạn (máy chủ phân tích cú pháp) được định cấu hình chính xác để xử lý các yêu cầu CORS và gửi đúng Kiểm soát truy cập-* tiêu đề, mọi thứ sẽ hoạt động cho dù bạn đặt bao nhiêu proxy ở giữa. Đó là miễn là proxy chuyển tiếp tất cả các yêu cầu.

Ngoài ra, bạn có thể muốn "tát" cấu hình CORS trong proxy ngược nhưng điều đó dường như không cần thiết ở đây. Vì bạn đang nhìn thấy hai Kiểm soát truy cập-Cho phép-Xuất xứ tiêu đề trong phản hồi, tôi nghi ngờ rằng máy chủ phân tích cú pháp trên thực tế đang cố xử lý yêu cầu CORS.

Tôi khuyên bạn trước tiên hãy kiểm tra cấu hình Apache của mình và đảm bảo rằng TÙY CHỌN các yêu cầu được chuyển tiếp đến máy chủ phân tích cú pháp. Nếu không phải như vậy, tôi sẽ xem xét các yêu cầu mà trình duyệt đưa ra trong tab mạng của các công cụ dành cho nhà phát triển:

  • Yêu cầu trước chuyến bay trông như thế nào? Thậm chí có một yêu cầu trước chuyến bay?
  • Nó thành công hay thất bại, và với lỗi gì?
  • Là những gì Kiểm soát truy cập-* tiêu đề phản hồi về yêu cầu trước chuyến bay?
  • Là yêu cầu cuối cùng được ban hành? Các tiêu đề phản hồi về yêu cầu đó là gì?

Bạn cũng có thể gỡ lỗi những thứ này bằng cách gọi các dịch vụ bằng Xoăn bằng cách đặt tiêu đề gốc.

curl -v -X PUT -H "Xuất xứ: https://example.com" https://www.example.org

Bằng cách đó, bạn có thể mô phỏng các yêu cầu đối với dịch vụ phụ trợ của mình và xem những tiêu đề mà nó gửi.

Điểm:0
lá cờ cn

Trong bảng điều khiển dành cho nhà phát triển của trình duyệt, tôi có thể thấy rằng tùy chọn Kiểm soát truy cập-Cho phép-Xuất xứ này được đặt hai lần.

Về các tiêu đề trùng lặp, tôi đã trả lời một câu hỏi tương tự gần đây trong danh sách gửi thư.

Bạn phải đọc tham chiếu cấu hình cho chỉ thị Header cẩn thận để hiểu chuyện gì đang xảy ra. Xem xung quanh văn bản sau: "nó không cung cấp bất kỳ danh sách tiêu đề "chuẩn hóa" nào". Về cơ bản, như tôi đang hiểu, thành công (mặc định) và luôn là tên của hai bảng (danh sách) tiêu đề riêng biệt.

Hãy thử như sau:

Tiêu đề onsuccess unset Access-Control-Allow-Origin
Tiêu đề luôn đặt Kiểm soát truy cập-Cho phép-Xuất xứ "*"
Vinoth Rc avatar
lá cờ fr
Bộ tiêu đề Kiểm soát truy cập-Cho phép-Xuất xứ "*" hoạt động

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.