标签: url-encoding

ASP.NET:获取*真实*原始URL

在ASP.NET中,有没有办法获得真正的原始URL?

例如,如果用户浏览到" http://example.com/mypage.aspx/%2F ",我希望能够获得" http://example.com/mypage.aspx/%2F "比" http://example.com/mypage.aspx// ".

我当然喜欢干净的方式,但我可以使用反射或访问模糊属性的hacky方法.

目前,我尝试在Authorization-header(可行)中使用uri,但我不能依赖于那里总是存在的.

编辑:

我真正想要做的是能够区分" http://example.com/mypage.aspx/%2F "和" http://example.com/mypage.aspx/%2F%2F ".

看起来ASP.NET首先将"%2F%2F"转换为"//",然后将斜杠转换为单个斜杠.

所以只是重新编码它是行不通的.

asp.net url url-encoding rawurl

7
推荐指数
2
解决办法
1万
查看次数

ASP.Net URL编码

我正在ASP.net中实现URL重写,我的URL导致我的问题世界.

URL是从部门和类别的数据库生成的.我希望员工能够使用适当的特殊字符向数据库添加项目,而不会破坏站点.

我在构造URL之前编码数据.

有几个问题......

  1. IIS在到达.net之前对URL进行解码,因此无法正确解析其中包含"/"的任何内容.
  2. ASP.net在某些页面中使用"〜"无效的网址感到困惑
  3. 我从内置测试服务器迁移到我的本地IIS服务器(XP机器),任何包含编码&(%26)的URL都会给我一个"错误请求"错误.
  4. UrlEncode留下一些破碎的字符,如'.'

我确实有两个关于这个主题的其他相关帖子,当时我只看到小问题不是上游的大问题.我发现了一些解决"错误请求"问题的注册表技巧,但我将部署到共享托管环境,使其无用.我也知道这是一个解决某些安全问题的方法,因此我不想在不知道我正在打开哪些蠕虫的情况下绕过它.

而不是试图强制.net传递原始URL,或覆盖IIS设置,我想首先制作真正安全的URL.

我会注意到我已经尝试过AntiXss.URLEncode,HttpUtility.URLEncode,URI.EscapeDataString.我甚至尝试过像双URLEncodng这样的蠢事.是否有一个实用程序可以满足我的需求,或者我真的需要自己动手.我甚至考虑做一些Hacky,比如用一个不寻常的字符串替换%.最终结果应至少是可读的,这首先是使用URL重写的重点.

很抱歉很长的帖子 - 我只是想确保我已经包含了所有必要的细节.我似乎无法找到任何相关信息,这似乎是一个常见的问题 - 所以也许我错过了一些大事.感谢您的帮助,以及对长篇解释的耐心!


为清晰起见编辑:

当我说从数据库构建网址时,我的意思是目录结构是从我的数据库中的部门和类别构建的.

一些示例URLS -

Mystore/Refrigeration/Bar + Fridge.aspx
Mystore/Cooking + Equipment.aspx
Mystore/Kitchen/Cutting + Boards.asxpx

当我使用像"Beverage&Bar"或"Pastry/Decorating"这样的部门来构建我的URL时会出现问题.尽管首先编码,但这些都会导致上述问题.

我的处理程序已经实现并且工作正常,除了特殊的字符编码问题.

c# asp.net iis url-rewriting url-encoding

7
推荐指数
1
解决办法
1万
查看次数

在Tomcat中自动检测URI编码

我有一个运行Apache Tomcat 6.x的实例,我希望它能够解释传入URL的字符集比默认行为更加智能.特别是,我想实现以下映射:

So%DFe => Soße
So%C3%9Fe => Soße
So%DF%C3%9F => (error)
Run Code Online (Sandbox Code Playgroud)

我想要的bevavior可以被描述为"尝试将字节流解码为UTF-8,如果它不起作用则假设ISO-8859-1".

URIEncoding在这种情况下,仅使用配置不起作用.那么如何配置Tomcat以我想要的方式对请求进行编码呢?

我可能必须编写一个过滤器来接收请求(尤其是查询字符串)并将其重新编码为参数.这是自然的方式吗?

java tomcat character-encoding url-encoding servlet-filters

7
推荐指数
1
解决办法
1万
查看次数

如何避免从URL.getFile()获取URL编码路径?

尝试获取给定资源的路径时遇到以下问题:

    System.out.println("nf="+new File(".").getAbsolutePath());      
    System.out.println("od="+new File(this.getClass().getResource(".").getFile());
Run Code Online (Sandbox Code Playgroud)

我得到的输出是:

nf=C:\Users\current user\workspace\xyz\.
od=C:\Users\current%20user\workspace\xyz\bin\something
Run Code Online (Sandbox Code Playgroud)

问题在于%20 URL编码的事情.怎么避免呢?有没有直接的方法来避免首先获得这种字符串,或者我应该只针对一些将进行URL解码的方法运行返回的字符串?

谢谢

java url-encoding

7
推荐指数
1
解决办法
2936
查看次数

如何对ASCII字符进行URL编码?

我正在使用Ruby提取文件的URL以下载和下载.文件名有utf8个字符,例如:

www.domain.com/.../ÖÇÄÜ360ÓïÒôÖúÀí.txt
Run Code Online (Sandbox Code Playgroud)

尝试下载上述URL时,失败.使用URI::escape生成的URI也不起作用:

www.domain.com/.../%C3%96%C3%87%C3%84%C3%9C360%C3%93%C3%AF%C3%92%C3%B4%C3%96%C3%BA%C3%80%C3%AD.txt
Run Code Online (Sandbox Code Playgroud)

但是,如果我按照URL编码参考,它的工作原理:

www.domain.com/.../%D6%C7%C4%DC360%D3%EF%D2%F4%D6%FA%C0%ED.txt
Run Code Online (Sandbox Code Playgroud)

我试图在Ruby中搜索一个完全相同编码的函数,但我找不到任何函数.在我尝试编写一个在上面的链接中实现表的函数之前,我想询问是否有人知道任何现有的库来执行此操作.如果我决定这样做,我应该编码的角色范围很明显,而不是一切.

我正在使用JRuby 1.6.2和RUBY_VERSION =>"1.8.7"

ruby jruby url-encoding ruby-on-rails-3

7
推荐指数
1
解决办法
3457
查看次数

如何在javascript中解码url编码的字符串

我使用javascript/jquery来填充包含变音符号的dom元素:

var text1 = "Unser platonisches Internetreich droht in die H%E4nde einer bewaffneten Miliz zu fallen."

$("#quote1 span").html(unescape(text1));
Run Code Online (Sandbox Code Playgroud)

如何摆脱网址编码,例如"H%E4nde"并改为使用"Hände"?我试过了

<meta charset="utf-8" />

<meta name="http-equiv" content="Content-type: text/html; charset=UTF-8"/>

<script type="text/javascript" src="js/index.js" charset="utf-8"></script>
Run Code Online (Sandbox Code Playgroud)

但它们似乎都不起作用......

感谢帮助.

javascript url-encoding

7
推荐指数
2
解决办法
2万
查看次数

在Ember.js中查询参数的URL编码

1.7.0-beta.1在我的最新项目中使用了Ember.js版本.我使用查询参数功能使列表在硬刷新后仍然存在(例如,在重新加载之后,仍然选择列表中的所选项).

我有一个控制器来管理:

export default Ember.ObjectController.extend({
    queryParams: [{selectedFiles: 'files'}],
    selectedFiles: Ember.A([]), //list of file ids

    ... //other props

    actions: {
    selectFile: function(file) {
        //set or remove the file id to the selectedFiles property
    }
});
Run Code Online (Sandbox Code Playgroud)

它工作得很棒,但有一个条件:url是url编码的:

Chrome和IE:

路径/ 354?文件=%5B "6513" %2C "6455" %2C "6509" %2C "6507" %2C "6505" %2C "6504" %2C "6511" %5D

FF(自动设置括号):

路径/ 354?文件= "6513" %2C "6455" %2C "6509" %2C "6507" %2C "6505" %2C "6504" %2C "6511"]

在Ember中有一种方法可以将query-param-string解码为更易读的格式吗?也许我可以在decodeURIComponent()某个地方使用这个功能?

所需的输出:

路径/ 354?文件= …

javascript url-encoding ember.js

7
推荐指数
1
解决办法
4422
查看次数

AngularJS路由参数包含任何字符

我是AngularJS的新手,请原谅我,如果这是显而易见的,但我正在寻找能够回答这个棘手问题的人.我正在实现一个应用程序,需要将一些参数传递给特定视图以显示有关书籍的详细信息.基本上我希望能够使用以下路由表达式:

bookApp.config(['$routeProvider', function($routeProvider) {
    $routeProvider.
        when('/catalog', {
            templateUrl: 'cataloglist.htm',
            controller: 'catCtrl'
        }).
        when('/book/:title/:chapter', {
            template: 'chapterdetail.htm',
            controller: 'chapterCtrl'
        }).
        otherwise({
            template: 'oops ... do not understand that route',
        });
    }]);
Run Code Online (Sandbox Code Playgroud)

表达式/book/:title/:chapter应该允许我传递书名的名称.我希望能够通过任何一本书的任何标题.为了确保正确分隔内容,我将对标题值进行URL编码,以便在编码值中没有斜杠,并且该值将由斜杠字符清楚地分隔.这是构造包含值的URL的常规方法.

问题是存在包含斜杠字符的书名(例如The 3/5 solution)这是URL编码为The+3%2F5+Solution.所以可以像这样构建一个URL:

 /app/#/book/The+3%2F5+Solution/The%20Beginning
Run Code Online (Sandbox Code Playgroud)

但是,我的经验似乎表明,在将其分解为参数之前,整个值都是URL解码的!这意味着任何带有斜杠的数据值都将被误解为两个值,并且路由参数的模式匹配被破坏,并且只传递值的前半部分.此外,该章节可能有斜杠在名称中也是如此.

如果我正在制作REST服务,我会对该值进行URL编码,并且在每个片段被解码之前,URL将被解析为片段.例如,我可以在URL中使用查询参数,如下所示:

app.jsp?title=The+3%2F5+Solution&chapter=The%20Beginning
Run Code Online (Sandbox Code Playgroud)

这将正常工作.使用URL编码,我可以在标题中传递任何字符串值.我本来希望路由参数可以做同样的事情......但我已经提到过我对AngularJS很新.

%2F在确定碎片之前解码为斜线似乎是一个非常严重的错误.显然,您根本无法将带斜杠的值作为路由参数传递. 我在这里错过了什么吗? 什么是允许我安全地传递其中包含任何可能字符的书名(以及带有任何字符的章节标题)作为路线参数的解决方案?

javascript url-routing url-encoding angularjs

7
推荐指数
1
解决办法
7712
查看次数

如何在Android上使用Google的中文字符文字转语音服务?

我正试图从谷歌的文字转语音功能中提取音频文件.基本上,你抛出链接,然后连接你想要在它结束时说出的任何内容.我已经得到以下代码,对英语工作得很好,所以我认为问题必须是如何在请求中对汉字进行编码.这是我得到的:

String text = "text to be spoken";
public static final String AUDIO_CHINESE= "http://www.translate.google.com/translate_tts?tl=zh&q=";
public static final String AUDIO_ENGLISH = "http://www.translate.google.com/translate_tts?tl=en&q=";

URL url = new URL(AUDIO_ENGLISH + text);

urlConnection = (HttpURLConnection) url.openConnection();
urlConnection.setRequestMethod("GET");
urlConnection.setRequestProperty("Accept-Charset", Variables.UTF_8);

if (urlConnection.getResponseCode() ==200) {
     //get byte array in response
     in = new DataInputStream(urlConnection.getInputStream());
} else {
     in = new DataInputStream(urlConnection.getErrorStream());
}
//use commons io
byte[] bytes = IOUtils.toByteArray(in);

in.close();
urlConnection.disconnect();

return bytes;
Run Code Online (Sandbox Code Playgroud)

但是,当我尝试使用中文字符时,它会返回一些我无法在媒体播放器中播放的内容(我怀疑它不是一个合适的音频文件,因为绝大多数字节都是'85').所以我试过了两个

String chText = "??";
URL url = new URL(AUDIO_CHINESE + URLEncoder.encode(chText, "UTF-8)); …
Run Code Online (Sandbox Code Playgroud)

java url android url-encoding chinese-locale

7
推荐指数
1
解决办法
3085
查看次数

浏览器支持URL中的UTF8编码字符

如果我使用特殊的UTF8编码字符导航到以下URL,我会在Web浏览器中获得不同的结果:

http://example.com/lörickè

  • Firefox 37 - 如上所示显示正确的URL.
  • Chrome 42 - 如上所示显示正确的网址.
  • Edge - 如上所示显示正确的URL.
  • IE 11 - 显示编码的URL百分比http://example.com/l%c3%b6rick%c3%a8/

我在哪里可以找到支持此功能的浏览器和版本列表,并且是否有关于新Microsoft Edge浏览器是否支持此功能的公告.

StackOverflow帖子为有兴趣的人强调了上述问题.

browser url encoding utf-8 url-encoding

6
推荐指数
1
解决办法
5937
查看次数