如果数据是Url Encoded,它是否足够安全以通过HTTP GET发送登录凭据?
我想你们中的一些人有使用Clickatell的经验.我的问题是:当我使用法语或西班牙语字符(URL编码)通过他们的http api发送消息时,他们不会在手机上显示(字符).
我正在使用这个--guide-:http:// support.clickatell.com /faq.php?mode=view_entry&kbid=121&kbcat=26
我已经用几部手机对它进行了测试,并且它们都表现出相同的结果:"一个人!我是一个人吗?" 应该是"çava!monélèvemiiña?" (或类似的东西)
不幸的是他们的支持不是很具体(对我来说),我现在有点困惑,这就是我得到的:
请参阅:http://www.dreamfabric.com/sms/default_alphabet.html
此后,请根据上述标准对您的text =参数进行编码以使您的法语字符在手机上正确显示.
我想url编码一个具有不支持的url协议(方案)的字符串.因此,在第3行,将抛出异常.反正有没有使URL类支持"mmsh"或任何其他"custom_name"方案?
编辑:我不想为我的应用程序注册一些协议.我只是希望能够使用没有"不支持的协议"异常的URL类.我正在使用URL类来解析和整理url字符串.
String string="mmsh://myserver.com/abc";
String decodedURL = URLDecoder.decode(string, "UTF-8");
URL url = new URL(decodedURL);
URI uri = new URI(url.getProtocol(), url.getUserInfo(), url.getHost(), url.getPort(), url.getPath(), url.getQuery(), url.getRef());
Run Code Online (Sandbox Code Playgroud) 我在我的网络浏览器中输入以下网址,然后按Enter键.
http://localhost/website.aspx?paymentID=6++7d6CZRKY%3D&language=English
Run Code Online (Sandbox Code Playgroud)
现在在我的代码中,当我做HttpContext.Current.Request.QueryString ["paymentID"]时,
我得到6 7d6CZRKY =
但是当我做HttpContext.Current.Request.QueryString.ToString()时,我看到以下内容:
paymentID = 6 ++ 7d6CZRKY%3D&语言=英语
我想要提取用户在Web浏览器URL中键入的实际付款ID.我不担心网址是否编码.因为我知道这里有一个奇怪的东西%3D和+同时签名!但我确实需要实际的+号.当我做HttpContext.Current.Request.QueryString ["paymentID"]时,不知何故它被解码到空间.
我只想提取用户输入的实际付款ID.最好的方法是什么?
谢谢.
如果我有一个文件名是
a'd1 & "[tttt]" + 'sq.jpg
将其上传到Amazon S3后,它将转换为
a'd1 & %22[tttt]%22 + 'sq.jpg
因此,双引号是URL编码的,文件名本身也已更改。
必须使用编码的URL提取文件
a%27d1+%26+%2522%5Btttt%5D%2522+%2B+%27sq.jpg
因此编码规则似乎是:
": %2522 (double encoded)
Space: +
&: %26
[: %5B
]: %5D
+: %2B
Run Code Online (Sandbox Code Playgroud)
有没有办法确定S3要求的所有规则?使用(encodeURI甚至encodeURIComponent)的普通javascript编码将无法正常工作
Windows中的certutil可用于执行Base64编码和解除.是否有用于URL编码和解码的内置实用程序?网上有很多免费工具.但我特意寻找Windows内置实用程序或者不是可以在Windows上运行的简单脚本.
谢谢!
我们有一个.Net Web应用程序,用户可以在其中下载文件.文件可以包含的文件名可能包含丹麦字符æ,ø和å以及某些外语的其他字符.
我们使用类HttpResponseMessage将ContentDispositionHeaderValue初始化的文件作为"附件"发送.
然而分配
FileName
Run Code Online (Sandbox Code Playgroud)
属性在IE中不适用于丹麦语字符,但如果我将文件名分配给,则有效
FileNameStar
Run Code Online (Sandbox Code Playgroud)
文件名自动编码为正确的格式.
这样可行:
Content.Headers.ContentDisposition = new ContentDispositionHeaderValue("attachment")
{
FileNameStar = "filename with æ ø and å"
};
Run Code Online (Sandbox Code Playgroud)
但是我找不到任何关于它为何被自动编码的文档,以及哪些浏览器支持此功能.
搜索互联网,给出建议,我应该在将字符串分配给FileNamestar属性之前对其进行编码.但这不是必需的,因为我可以在http跟踪中看到它被正确编码.
所有主流浏览器都支持这个吗?我可以确定文件名是否正确编码?
谢谢圣战
我试图找出在HttpClient处理URL方面的一些不一致之处。
我有以下测试代码:
public async Task TestHttpClient()
{
var baseUrl = "https://api.twitter.com/1.1/search/tweets.json";
//var query = "(cafe OR boulangerie)";
var query = "(café OR boulangerie)";
var url = baseUrl + $"?q={Uri.EscapeDataString(query)}";
var httpClient = new HttpClient();
var response = await httpClient.GetAsync(url);
await response.Content.ReadAsStringAsync();
}
Run Code Online (Sandbox Code Playgroud)
该代码实际上将无法工作,因为我们需要身份验证和其他内容才能进行Twitter搜索。但这证明了我的问题。
该变量url将具有以下值:
https://api.twitter.com/1.1/search/tweets.json?q=%28caf%C3%A9%20OR%20boulangerie%29
但是,查看Fiddler中的请求,我可以看到实际发送的是: https://api.twitter.com/1.1/search/tweets.json?q=(caf%C3%A9%20OR%20boulangerie)
因此突然之间,括号不再被编码。这对我来说很重要,因为我使用编码的查询字符串来计算用于对Twitter进行身份验证的签名。因此,我的签名将带有百分比编码的括号,而请求不会,因此Twitter引发错误并告诉我身份验证失败。
有趣的是,如果我使用常规e而不是常规发送查询,é则括号将编码在请求中!像这样:https://api.twitter.com/1.1/search/tweets.json?q=%28cafe%20OR%20boulangerie%29
我想这是某种错误HttpClient吗?我可以以某种方式解决此问题吗?
我正在努力了解的行为UriComponentsBuilder。我想使用它在查询参数中对URL进行编码,但是它似乎只能转义%字符,而不可以转义其他必需的字符&。
根本没有编码的查询参数中的URL的示例:
UriComponentsBuilder.fromUri("http://example.com/endpoint")
.queryParam("query", "/path?foo=foo&bar=bar")
.build();
Run Code Online (Sandbox Code Playgroud)
输出: http://example.com/endpoint?query=/path?foo=foo&bar=bar
这是不正确的,因为未编码的&原因bar=bar会被解释为/endpoint而不是的查询参数/path。
但是,如果我使用包含%字符的输入::
UriComponentsBuilder.fromUri("http://example.com/endpoint")
.queryParam("query", "/path?foo=%20bar")
.build();
Run Code Online (Sandbox Code Playgroud)
输出: http://example.com/endpoint?query=/path?foo=%2520bar
该%字符转义。
似乎UriComponentsBuilder会自动转义%字符,但不会自动转义其他保留字符,这是不一致的。
将URL编码为带有查询参数的正确过程是什么UriComponentsBuilder?
let testurl = "http://akns-
images.eonline.com/eol_images/Entire_Site/2018029/rs_1024x759-
180129200032-1024.lupita-nyongo-angela-bassett-black-panther-
premiere.ct.012918.jpg?fit=inside|900:auto"
if let url = URL(string: testurl){
print("valid")
}else {
print("invalid")
}
Run Code Online (Sandbox Code Playgroud)
这将打印为无效的URL.但是在Web浏览器中显示图像.我已经看到很多方法,但它会抛出Apple警告使用stringByAddingPercentEncodingWithAllowedCharacters,这总是不起作用.
我更喜欢一个解决方案来清理网址而不编码完整的urlstring.在初始步骤对其进行编码可能是传递给外部库时的摩擦,外部库将重新编码URL并使其无效.