2010-09-16 36 views
0

正常工作,我有一个URL在IFRAME像这样的参数:Safari 5的HTML的iframe不与URL +参数

<iframe src="http://www.example.com/id=123&place=123"></iframe> 
完美的FF3 +

作品,IE6 +(相信我)和Safari 4,但在Safari 5是不同的。 S5将URL更改为http://www.example.com/id=123& amp; place = 123

有人知道我该如何解决这个头痛问题?

tks。

+0

你从哪里看到这个改变? – ngroot 2010-09-16 17:47:43

+0

你*必须*有'&地方',或者它只是无效的HTML。浏览器将解析'&',并在将其用作URL之前将其转换为属性值中的正常和号。 – bobince 2010-09-16 18:07:56

+0

@bobince是的。有时候我忘了HTML与XML没有太大区别。韩国社交协会。 – manoelhc 2010-09-16 20:16:19

回答

1

你是什么意思它改变了URL?它是否尝试访问url http://www.example.com/id=123&amp;place=123?还是它仍然尝试访问http://www.example.com/id=123&place=123?当我尝试你的榜样指向localhost,而不是example.com,和Safari 5的记录请求,我得到的符号&,不&amp;

 
$ nc -l 4242 
GET /?id=123&place=123 HTTP/1.1 
Host: localhost:4242 
User-Agent: Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_8; en-us) AppleWebKit/533.17.8 (KHTML, like Gecko) Version/5.0.1 Safari/533.17.8 
Accept: application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5 
Referer: http://livedom.validator.nu/blank.html 
Accept-Language: en-us 
Accept-Encoding: gzip, deflate 
Connection: keep-alive 

注意的是,在你的源URL中使用&amp;实际上是正确的方法写它;如果您编写&,浏览器将尝试将以下文本解释为实体。如果它找不到匹配的实体,那么它会假设您错误地使用了原始的&并将使用该实体,但您需要小心,因为您可能意外地形成实体而不是您请求的实际&符号。所以,为了避免可能的错误,你应该在你的代码中写入&amp;。如果您正在检查或序列化DOM,例如通过innerHTML,Safari可能会重写URL以便您正确使用&amp;,以避免此类错误。

+0

谢谢Brian。也许,&不是问题。我尝试在我的本地主机传递一个带参数的URL,并且也可以工作,即使我改变域(指定为127.0.0.1)。在我的真实情况下,我将一个带有有效证书的外部HTTPS地址放在Iframe中,并且失败。如果我在地址栏中放入相同的URL,它就会起作用。我不确定safari是否正确处理iframe地址,这是非典型的行为。 – manoelhc 2010-09-16 18:36:44

+0

在iframe中,外部地址具有与未传递参数相同的行为。 – manoelhc 2010-09-16 18:42:11

+0

@manoelhc您将不得不向我们提供更多信息以便能够帮助您。你能否提供失败的'https' URL?你能否向我们提供你从服务器发回的标题?有可能网站正在尝试阻止被加载到'