我有一個來自僅通過http
協議提供服務的第三方供應商的資源。當我包括腳本標籤這樣的...從html頁面提供javascript文件
<script src="http://example.com"></script>
我得到一個JavaScript變量與JSON數據,類似這樣的...
var data = {"total": "10", "results": [{"name": "Joe", "title": "developer"}, {"name": "Jane", "title": "engineer"}]};
然後我就可以使用變量data
在我頁面輸出結果等
的問題是,我要爲通過SSL(https
)頁面上的這個數據,我不能爲https
頁面進行資源請求通過http
- 意爲<script/>
包括不起作用。
作爲一個解決方案,我從服務器頁面請求資源,比如說data.cfm
,然後通過我的服務器通過https
重新提供JS變量。所以,在這種情況下,我想請求https://anotherserver.com/data.cfm
服務於相同的JS爲http://example.com
<cfhttp result="myData" method="GET" charset="utf-8" url="http://example.com">
<cfoutput><pre>#myData.fileContent#</pre></cfoutput>
我也應該注意到,JSON數據具有HTML標記它。
當我嘗試去https://anotherserver.com/data.cfm
我收到數據,但它的格式不正確。例如,超鏈接作爲超鏈接處於活動狀態。
我也嘗試過使用<cfdump>
,它將數據作爲未格式化的字符串返回,但是當我使用<script src="https://anotherserver.com/data.cfm"></script>
標記時,我沒有得到JS變量。
更新
有了進一步的測試,我發現,如果我只將數據複製文本中2個文件:data.cfm和data.js JS文件按預期工作和CFM文件沒有。這導致我相信文件擴展名導致資源被讀爲html。所以,這實際上更多的是Coldfusion的問題。如何將瀏覽器的cfm文件設置爲javascript?是否有一些響應標題或元數據字段可以完成此操作?
「我需要通過SSL(https)在頁面上提供此數據,並且我無法通過https爲https頁面提出資源請求」這部分對我來說沒有意義。通過HTTPS爲系統提供服務會如何防止您向通過HTTP提供服務的資源發送請求? – Ken
@Ken http://stackoverflow.com/questions/28517391/allow-loading-http-resources-over-https –
@VincentvanderWeele是的,如果你正在加載資源。他從腳本中加載返回一個json對象,然後使用這些數據。爲什麼不通過AJAX請求對象? – Ken