3

我正在运行一个加载远程数据的 Flash 应用程序,我们正在过渡到使用 (SSL) https://

我想知道是否可以像在 JavaScript 中那样使用“//”来自动假定父页面的协议(http 或 https)。

谢谢

更新:在我看来,您可以使用像“//www.something.com”这样的url格式,但不是假设页面协议,它似乎只是默认为“ http://www.something.com ”。

现在我通过检查 SWF 是否是 SSL url 来解决这个问题。像这样的东西:

if( loaderInfo.url.indexOf("https:") == 0 ) {
    //replace http: with https:
}

不幸的是,在您处理远程资产 URL 的任何地方都这样做很不方便。只需使用匹配的 proto 加载所有内容会更好......比如“//www.someurl.com/wouldbenicer.xml”,特别是因为 js 和 html 都以这种方式工作。

废话。

有任何想法吗?

4

3 回答 3

1

"//" 相对 proto 在 flash 中不能像浏览器使用 HTML 中的 url 那样工作,而是默认为 http://

解决方法:

检查 SWF 的 URL 是否应该将要加载的 URL 修改为 https:// 协议:

 if( loaderInfo.url.indexOf("https:") == 0 ) {
     //replace http: with https:
 } else {
   //replace https: with http:
 }
于 2013-10-21T20:07:09.353 回答
1

基于 OG Sean 的回答,这里有一个包装函数,它将管理协议相关的 URL 并默认为 HTTP。

function relativeURL(url:String) {
    var scheme = (loaderInfo.url.indexOf("https:") == 0) ? "https:": "http:";
    var url = scheme + url.replace(/^https?:/,"");
    return url;
}
于 2014-03-14T17:19:08.747 回答
0

使用包含splash的字符串,并添加两次

var singlesplash:String = "/";
var doublesplash:String = singlesplash + singlesplash;
myurl = "http:" + doublesplash + "www.google.com";

或者

myurl = "http:/" + "/www.google.com";
于 2013-09-23T13:17:23.787 回答