NSURL的parameterString混淆使用';' vs'&'

Mel*_*emi 6 parameters url cocoa cocoa-touch nsurl

我想-[NSURL parameterString]用来解析我已经传递的URL的参数.它说URL必须符合RFC 1808,但现在想知道我们的吗?!?我们使用类似的东西:

http://server/path/query?property1=value1&property2=value2

但RFC 1808从未提及&符号(&)作为有效的参数分隔符(至少我读它的方式).它表示分号(;).也许是因为它是在1995年起草的?有&取代了; ?如果是这样,任何人都验证NSURL的parameterString是否也将使用&作为分隔符进行解析?

在挖掘大洞之前,"正确"的方式是什么?

小智 8

根据RFC 1808(2.1.URL语法组件),正确的语法如下:

<scheme>://<net_loc>/<path>;<params>?<query>#<fragment>
Run Code Online (Sandbox Code Playgroud)

它说查询信息的格式符合RFC 1738的3.3节,它告诉我们:

"在路径和searchpart组件中,"/",";","?"是保留的."

对我来说,上面说你的URL路径(到您的CGI)是:

http://server/path/query
Run Code Online (Sandbox Code Playgroud)

并且查询是:

property1=value1&property2=value2 
Run Code Online (Sandbox Code Playgroud)

其中不包含任何保留字符.所以你没事.实际上,在这里使用"&"作为查询字符串中的分隔符来自CGI规范而不是URL RFC:

"表单数据是由&字符分隔的名称=值对的流."