近日碰到web開發的跨域問題,甚爲惱火,網上找了不少資料,但不少都大同小異,沒有解決問題。幸運的是,無心中看到了「沃通」,最後在沃通技術支持的幫助下,圓滿解決了問題,在這裏我要給這位技術支持點贊!php
廢話很少說,直接進入正題!web
問題:https與http的嵌套問題chrome
在caspio(一個應開發平臺,不區分先後臺)的https頁面中用iframe嵌套我本身的一個web應用,開始個人應用是使用 http 訪問,結果在IE中打開時,瀏覽器會提示頁面中包含不安全的內容,只有在點擊「顯示所有內容」後才能看到iframe中個人應用;而在chrome中,完 全沒顯示,只在後臺console中顯示錯誤。跨域
解決方案: 瀏覽器
首先,必須明白一點,要想好的用戶體驗,就必須避免不一樣站點的https與http的嵌套問題,那麼,解決辦法就是將http的站點部署爲 https的,前提是這個http的站點你是能夠徹底控制的,由於你須要修改其服務器配置。如下就是針對Apache配置https的過程。Apache 使用的是phpstudy的集成開發環境。安全
https =http+SSL服務器
第一步,準備SSL證書。網站
若是你不想掏錢,你能夠去沃通官網(https://www.wosign.com/) 申請免費的沃通提供的免費SSL證書,使用時長是一年。申請過程就不說了,很清楚,注意一點就是注意保管好證書安裝密碼,而且註冊的域名要和你的網站的域 名保持一致。註冊完後,系統會返回一封郵件發郵件,有一個是客戶端SSL證書,一個是服務器SSL證書,顯然咱們須要服務器端證書,(若是沒有收到能夠問 客服)。服務器端證書是一個以你域名命名的壓縮包,其中對應各類不一樣服務器,樓主此處選的是for Apache.zip。該壓縮包中包括三個文件,私鑰,公鑰和證書。接口
1_root_bundle.crt ip
2_www.test.com.crt
3_www.test.com.key
而後,將這三個文件放入你的Apache的conf目錄下便可。
第二步,配置Apache
1.打開Apache的配置文件httpd.conf,去掉下面一項前面的註釋符 #
#LoadModule ssl_module modules/mod_ssl.so
2.配置https接口
(這裏咱們不用#Include conf/extra/httpd-ssl.conf ,直接在httpd.conf文件中配置)
在httpd.conf文件的末尾添加以下代碼
###################################################################
#https的訪問端口
Listen 443
<VirtualHost *:443>
SSLEngine on
#Apache的web項目虛擬目錄,與前面保持一致
DocumentRoot "C:\inetpub\wwwroot"
ServerName www.seevin.com
#此處對應的就是前面公鑰、私鑰和證書
SSLCertificateFile "C:\Program Files\phpStudy\Apache\conf\2_www.seevin.com.crt"
SSLCertificateKeyFile "C:\Program Files\phpStudy\Apache\conf\3_www.seevin.com.key"
SSLCertificateChainFile "C:\Program Files\phpStudy\Apache\conf\1_root_bundle.crt"
</VirtualHost>
###################################################################
OK,配置完成,重啓Apache,便可使用Https訪問你註冊的域名。
樓主配置中遇到的問題,也是讓那位技術支持糾結了很久的問題:就是後面公鑰、私鑰和證書的目錄問題致使Apache沒法啓動,建議使用絕對目錄,相對目錄可能會有問題。
另外一個形成沒法啓動Apache的問題,443端口已被佔用,此時能夠選則別的端口。