使用JSTL对表示URL路径(而不是请求参数)的String进行URL编码的最佳方法是什么?
<c:url value="/user/${user.name}"/>
Run Code Online (Sandbox Code Playgroud)
根据我发现的任何文件,这应该照顾它.但事实并非如此.它精美地编码参数(<c:url value="/user/${user.name}"><c:param name="section" value="employment 4u so good"/></c:url>
)但我没有传递任何参数.如何安全地编码一个简单的URL,如上所述,而不用担心${user.name}
会是什么?
由于与联盟合作伙伴的沟通错误,我们正在使用他们在我们的服务器上调用的URL混淆了.
这是他们应该在我们的服务器上调用的URL:
/AAAAAAAA/?b=CCCCCCC
Run Code Online (Sandbox Code Playgroud)
不幸的是,它是在他们的系统中实现的
?b=CCCCCCC/AAAAAAA
Run Code Online (Sandbox Code Playgroud)
我可以很容易地解析组件,但我担心带有/的查询字符串参数实际上不是有效的URL.
URL中的/实际上是有效的 - 或者我应该关注.在什么情况下可能会出现未编码/导致查询字符串中的问题.
冒号是一个可以根据许多站点编码为'%3A'的字符,当我尝试使用URIencode
它进行编码时,它不起作用
例如,如果我尝试编码,URIencode(':');
那么没有任何反应.结肠返回.为什么是这样??有人可以帮助我.
提前致谢.
我期待AngularJS使用标准的javascript函数对查询字符串参数进行编码encodeURIComponent
.根据以下测试,情况并非如此:
describe('$http', function () {
it('encodes uri components correctly', inject(function($http, $httpBackend) {
var data = 'Hello from http://example.com';
$httpBackend.expectGET('/api/process?data=' + encodeURIComponent(data));
$http({ method: 'GET', url: '/api/process', params: { data: data } });
$httpBackend.flush();
}));
});
Run Code Online (Sandbox Code Playgroud)
测试失败,出现以下错误:
$ http正确编码uri组件
错误:意外请求:GET /api/process?data=Hello+from+http:%2F%2Fexample.com
预期GET/api/process?data = Hello%20from%20http%3A%2F% 2Fexample.com
总结一下:
Hello%20from%20http%3A%2F%2Fexample.com
Hello+from+http:%2F%2Fexample.com
我应该期待使用AngularJS的uri组件(也就是查询字符串参数)编码方法?
我写了一些代码来用 C# 发布推文。绊倒我的一件事是数据的 url 编码,因为似乎有很多选择:
var input = "Hello Ladies + Gentlemen, a signed OAuth request!";
var expected = "Hello%20Ladies%20%2B%20Gentlemen%2C%20a%20signed%20OAuth%20request%21";
Console.WriteLine(WebUtility.UrlEncode(input) == expected); // False
Console.WriteLine(Uri.EscapeUriString(input) == expected); // False
Console.WriteLine(Uri.EscapeDataString(input) == expected); // True
Run Code Online (Sandbox Code Playgroud)
我现在正在尝试在 Dart 中做同样的事情。我已经尝试了 Uri 类中的所有编码方法,但似乎没有一个输出相同。
代码:(飞镖板)
print(Uri.encodeQueryComponent("Hello Ladies + Gentlemen, a signed OAuth request!"));
print(Uri.encodeFull("Hello Ladies + Gentlemen, a signed OAuth request!"));
print(Uri.encodeComponent("Hello Ladies + Gentlemen, a signed OAuth request!"));
Run Code Online (Sandbox Code Playgroud)
输出:
Hello+Ladies+%2B+Gentlemen%2C+a+signed+OAuth+request%21
Hello%20Ladies%20+%20Gentlemen,%20a%20signed%20OAuth%20request!
Hello%20Ladies%20%2B%20Gentlemen%2C%20a%20signed%20OAuth%20request!
Run Code Online (Sandbox Code Playgroud)
最后一个 ( encodeComponent
) 似乎最接近,只是感叹号是错误的。
是否有一种现有的方法可以按照我的要求进行这种编码(与 C# …
我有 Eclipse neon,它可以与 Apache Tomcat 7 一起正常工作,现在我想为 tomcat 的连接器设置 URIEncoding="UTF-8"。但是eclipse每次发布项目都会重写server.xml文件,删除我的配置。
我想找到一种在 eclipse tomcat 设置页面中设置 URIEncoding="UTF-8" 的方法。公共选项卡中的启动配置(在 tomcat 设置页面中)有一个选项作为编码,我将其设置为 UTF-8,但它也不起作用。
提前致谢。
uriencoding ×6
javascript ×2
uri ×2
angularjs ×1
dart ×1
eclipse ×1
el ×1
encoding ×1
http ×1
java ×1
jsp ×1
jstl ×1
query-string ×1
tomcat ×1
utf-8 ×1