Why doesn't Twitter and Google API documentation encode ampersands in URLs?

[亡魂溺海] 提交于 2020-01-01 07:56:27

问题


I have read I should encode my ampersands as & in HTML.
However numerous code samples from respected companies somehow forget to do this.

Just a few examples off the top of my head:

Google Web Fonts sample code:

<link href='http://fonts.googleapis.com/css?family=PT+Sans&subset=latin,cyrillic' rel='stylesheet' type='text/css'>

Google Maps documentation:

<script type="text/javascript" src="http://maps.googleapis.com/maps/api/js?sensor=false&language=ja">

Twitter Anywhere official tutorial:

<script src="http://platform.twitter.com/anywhere.js?id=YOUR_API_KEY&v=1" type="text/javascript"></script>

Is there any real benefit from not escaping ampersand in links?
Is this related to browser quirks? Is this just a mistake in documentation?

Dear answerers, please make sure you're answering the right question.

I know I should escape ampersands per spec. I also know why the mechanism was invented in the first place. I'm not asking about this. My question is:

Is there a reason API documentation by respectable companies often violates this rule?


回答1:


Is there any real benefit from not escaping ampersand in links?

It saves a few keystrokes.

Is this related to browser quirks?

No

Is this just a mistake in documentation?

Yes

Is there a reason API documentation by respectable companies often violates this rule?

Ignorance and/or laziness. Browsers perform error recovery so they either don't notice the errors or they don't care. The documentation probably isn't written by their best experts.




回答2:


Two different contexts here.

  1. Within the context of a javascript href, the & is just fine and should not be encoded.
  2. In an HTML link the & is forbidden and should be escaped.

In the HTML link context an HTML character entity will be decoded before the address is passed to the HTTP process; a URL-encoded character will not, as the server can read it directly.



来源:https://stackoverflow.com/questions/8874706/why-doesnt-twitter-and-google-api-documentation-encode-ampersands-in-urls

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!