2011-11-24 23 views
9

Dường như hầu hết, nếu không phải tất cả, điểm cuối của nhà cung cấp bị oEmbed không bật CORS. Điều này có nghĩa là tôi phải sử dụng JSONP (đối với những người hỗ trợ nó) hoặc đi qua proxy máy chủ chỉ để sử dụng oEmbed.Tại sao không nhiều nhà cung cấp oEmbed bật chia sẻ tài nguyên miền chéo trên điểm kết thúc của họ?

Có chính sách công ty chống lại việc sử dụng JSONP từ nhà cung cấp bên thứ ba, nhưng tôi vẫn muốn tận dụng oEmbed theo cách hoàn toàn phía máy khách (đối với một số nhà cung cấp mà chúng tôi tin tưởng). Tôi hiểu ý nghĩa bảo mật của NGƯỜI TIÊU DÙNG của oEmbed và tại sao họ có thể không muốn cho phép đánh dấu của bên thứ ba trực tiếp vào trang của họ, nhưng tại sao các nhà cung cấp hạn chế điều này? Tôi có thể dễ dàng có lỗ hổng XSS nếu tôi xây dựng proxy máy chủ và không lọc kết quả.

+1

Yup. Tôi ước họ đã làm. Slideshare cung cấp một API với CORS vô hiệu hóa mà làm cho nó khá nhiều vô dụng. – Jaseem

+0

Đâu là điểm đầu tiên nếu các trang web khác có liên kết đến tài nguyên của nhà cung cấp không thể sử dụng nó? Nếu nó chỉ dành cho việc sử dụng nội bộ, thì đừng liệt kê chính mình là hỗ trợ nó trên oEmbed.com, phải không? – Gunchars

Trả lời

1

Chỉ cần đoán:

Nó có thể liên quan đến yêu cầu preflight. Đặc tả CORS (http://www.w3.org/TR/cors/#resource-preflight-requests) nói rằng khách hàng nên gửi một yêu cầu OPTION bổ sung trong nhiều trường hợp (về cơ bản, đối với bất kỳ thứ gì bên ngoài GET hoặc POST cơ bản) . Nó có nghĩa là, ở phía máy chủ, bạn sẽ tăng gấp đôi các yêu cầu đến của bạn chỉ bằng cách cung cấp CORS và có thể tải phụ đó sẽ không thể chấp nhận được.

+0

OEmbed sử dụng "thay đổi cơ bản GET" và như vậy yêu cầu vẫn sẽ được gửi đi, nó chỉ sẽ bị từ chối ở phía khách hàng. – Gunchars