[Javascript] AJAX,子域和SSL


Answers

大多數瀏覽器根據其安全/隱私設置,將阻止任何外部呼叫 - 只允許對同一個域進行AJAX調用。 即使是子域名也被阻止,因為在共享環境中,它們可能構成真正的威脅。

簡而言之:只能通過相同的域名進行AJAX調用(也許調用一個頁面,然後調用另一個域的另一個頁面 - 通過curl / fopen / ...),否則會遇到麻煩。 這也解答了你的SSL問題 - 無論你使用的是什麼SSL,也不管它們是否一樣 - 即使SSL,呼叫也會被阻塞。

Question

我有一個網站,foo.com,使ajax請求bar.foo.com。 這將工作。

另外,如果foo是一個安全的連接,https,bar.foo.com是否也需要https? 這兩個網站可以使用不同的證書嗎?




您可以結合使用JavaScript TLS和Flash來完成安全的跨域請求。 這樣你的訪問者就可以訪問https://foo.com ,你可以把XmlHttpRequests設置為https://bar.foo.com 。 你可以用普通的http做同樣的事情。

您需要購買訪問者的瀏覽器將為foo.com信任的SSL證書,但是您可以為bar.foo.com,bar2.foo.com等生成自己的SSL證書。 SSL證書(免費)是為* .foo.com購買通配符SSL證書。 但是,如果您只是通過foo.com向這些網站進行跨域請求,那麼您不需要花費額外的現金。

查看github上的開源Forge項目:

http://github.com/digitalbazaar/forge/blob/master/README

最後的博客鏈接提供了更深入的解釋。