2015-04-18 15 views
7

Trang web của tôi hỗ trợ cả giao thức http và https. Tuy nhiên bằng cách sử dụng đoạn mã sau trong tập tin .htaccess, tôi chỉ có thể thiết lập một tên miền để cho phép các yêu cầu CORS:Cho phép yêu cầu nguồn gốc chéo cho http và https

Header set Access-Control-Allow-Origin: http://example.com

tôi muốn cho phép CORS cho cả http và https phiên bản của trang web của tôi (không chỉ là "*") và đã thử các giải pháp ở đây: Access-Control-Allow-Origin Multiple Origin Domains?

Nhưng vấn đề là tất cả các giải pháp dựa trên yêu cầu có thể không tồn tại và cũng không an toàn. (bất kỳ ai cũng có thể đặt tiêu đề gốc trong yêu cầu của họ)

Tôi muốn biết liệu yêu cầu đã được cung cấp qua https và sử dụng thông tin này để đặt tiêu đề CORS phù hợp chưa. Một cái gì đó như thế này:

SetEnvIf servedOverHttps httpsOrigin=true 
Header set Access-Control-Allow-Origin: https://example.me env=httpsOrigin 

SetEnvIf notServedOverHttps httpOrigin=true 
Header set Access-Control-Allow-Origin: http://example.me env=httpOrigin 

Tôi làm cách nào để tìm hiểu rằng đó là yêu cầu https?

Trả lời

3

Bạn đã thử sử dụng biến số HTTPS?

Nó sẽ được đặt thành "on" cho tất cả các yêu cầu https. .htaccess của bạn sẽ trông giống như thế này

Header set Access-Control-Allow-Origin: http://example.com    #default 
Header set Access-Control-Allow-Origin: https://example.com env=HTTPS #override if https 
+1

điều gì xảy ra nếu người dùng đặt tiêu đề theo chương trình từ tệp php? – Vivek

Các vấn đề liên quan