标签: urlencode

得到错误400/404 - HttpUtility.UrlEncode没有编码完整的字符串?

为什么以下URL会在下面给出IIS错误:

A)http://192.168.1.96/cms/View.aspx/Show/Small+test '

A2)http://192.168.1.96/cms/View.aspx/Show/Small%20test '< - 这是有效的,但不是来自HttpUtility.UrlEncode()的结果

B)http://192.168.1.96/cms/View.aspx/Show/'%26 $%23funky**!!〜''+ page

A错误:

HTTP Error 404.11 - Not Found
The request filtering module is configured to deny a request that contains a double escape sequence.
Run Code Online (Sandbox Code Playgroud)

B错误:

HTTP Error 400.0 - Bad Request
ASP.NET detected invalid characters in the URL.
Run Code Online (Sandbox Code Playgroud)

/ Show /之后的URL的最后一部分是通过HttpUtility.UrlEncode()发送文本后的结果,因此,根据Microsoft,它是正确的URL编码.

如果我使用HttpUtility.UrlPathEncode()而不是HttpUtility.UrlEncode(),我得到A2结果.但B最终看起来像:

http://192.168.1.96/TVCMS-CVJZ/cms/View.aspx/Show/'&$#funky**!!〜''%20page

仍然是错的.Microsoft是否知道如何对URL进行编码?是否有人编写过正确的方法来执行此操作?

编辑:

我写了自己的编码器:

static public string UrlEncode(string encode)
{
    if (encode == null) return null;
    string encoded = "";

    foreach (char c …
Run Code Online (Sandbox Code Playgroud)

c# iis-6 urlencode

8
推荐指数
1
解决办法
4150
查看次数

允许双URL编码的请求路径有效

我有一个标准的ASP.Net WebForms应用程序在IIS 7.0上运行,带有集成管理管道.我们网站上的许多图像都有文件名中的空格(例如'./baseball drawing.gif').当我们将这些图像放入我们的html页面时,我们会对路径进行编码,以便我们的html img标签看起来像这样<img src='./baseball%20drawing.gif' />

现在,当某些搜索引擎和webcrawler尝试索引我们的网站时,问题就出现了.当他们刮擦我们的页面时,他们将html编码我们已经html编码的路径获取像这样的图像链接'./baseball%2520drawing.gif',其中%25是'%'的url编码.这会导致两个问题:

  1. 当用户从这些搜索引擎获得结果时,他们会收到断开的链接
  2. 当用户尝试导航到这些损坏的链接时,它会在我们的系统中引发错误.

你可以看到这是一个失败的局面.用户得到断开的链接,我们的错误日志中会出现噪音.

我一直试图找出如何纠正这个问题没有运气.这是我尝试过的:

  1. <requestFiltering allowDoubleEscaping='true'>在web.config中设置以防止"404.11 URL Double Escaped error".这修复了第一个错误但导致了一个新错误,"发现了一个潜在危险的Request.Path".
  2. 从中删除'%' <httpRuntime requestPathInvalidChars>以防止"潜在危险的Request.Path"错误.这修复了第二个错误,但现在我们有第三个错误,"无法找到资源".
  3. 我在我的代码中休息了一下Request.Path.看起来它的值是'Ball Image.gif'而不是'Ball%2520Image.gif'.在这种情况下,我不确定它为什么不起作用.

我觉得我有一个超级黑客,我必须禁用一切,而不是真正理解为什么没有任何工作.所以我想我的问题是三折

  1. 为什么解决方案尝试1不解决问题?
  2. 为什么解决方案2没有解决问题?
  3. 为什么我的Request.Path在步骤3中看起来正确但它仍然不起作用?

任何人都可以提供任何帮助将不胜感激.

asp.net validation iis-7 urlencode

8
推荐指数
1
解决办法
7250
查看次数

应该使用encodeURI吗?

javascript的encodeURI函数是否有用?

据我所知,当您尝试发出HTTP请求时,您应该:

  • 一个完整的URI
  • 您想要放入URI的一些片段,它可以是unicode字符串或UTF-8字节序列

在第一种情况下,显然没有什么需要做的来请求它.注意:如果您确实想将其作为参数传递(例如?url = http ...),那么您实际上有第二种情况的实例恰好看起来像一个URI.

在第二种情况下,您应始终将unicode字符串转换为UTF-8,然后在将其添加到URI之前调用encodeURIComponent以转义所有字符.(如果您有UTF-8字节序列而不是unicode字符串,则可以跳过convert-to-utf8步骤).

假设我没有错过任何东西,我看不到encodeURI的有效用途.如果你使用它,很可能你构造了一个无效的URI,然后尝试在事后"消毒"它,这是不可能的,因为你不知道哪些字符是字面上的意图,哪些是打算转义的.

我已经看到很多反对使用escape()的建议,但是没有看到任何人阻止encodeURI.我错过了有效用途吗?

javascript urlencode

8
推荐指数
2
解决办法
3792
查看次数

在bash脚本中编码字符串的URL

我正在写一个bash脚本,我试图提交一个post变量,但是wget将它视为多个URL我相信因为它不是URLENCODED ...这是我的基本思想

MESSAGE='I am trying to post this information'
wget -O test.txt http://xxxxxxxxx.com/alert.php --post-data 'key=xxxx&message='$MESSAGE''
Run Code Online (Sandbox Code Playgroud)

我收到错误并且alert.php没有得到post变量加上它很难说

无法解决我无法解决我无法解决尝试..等等.

我上面的例子是一个简单的有点sudo示例,但我相信如果我可以对其进行url编码,它会通过,我甚至尝试过像:

MESSAGE='I am trying to post this information'
MESSAGE=$(php -r 'echo urlencode("'$MESSAGE'");')
Run Code Online (Sandbox Code Playgroud)

但PHP错误..任何想法?如何在没有php执行的情况下传递$ MESSAGE中的变量?

linux bash command-line wget urlencode

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

如何在PartitionKey中使用单引号查询azure表存储

我正在将一些代码从较旧的azure表存储客户端迁移到最新版本,并遇到了一个让我难以理解的问题:我似乎无法在分区密钥中发送带有单引号的查询而不会收到400错误请求.例如:

public class TestEntity : TableEntity
{
    public string TestProperty { get; set; }
}

public class StorageTester
{
    public static void TestInsert()
    {
        CloudStorageAccount acct = CloudStorageAccount.DevelopmentStorageAccount;
        CloudTableClient client = acct.CreateCloudTableClient();
        CloudTable table = client.GetTableReference("testtable");
        table.CreateIfNotExists();

        // insert a test entity -- this works fine
        TestEntity entity = new TestEntity();
        entity.PartitionKey = "what's up";
        entity.RowKey = "blah";
        entity.TestProperty = "some dataz";

        TableOperation op = TableOperation.Insert(entity);
        table.Execute(op);

        // now query the entity -- explicit query constructed for clarity
        string partitionFilter …
Run Code Online (Sandbox Code Playgroud)

c# urlencode azure azure-table-storage

8
推荐指数
1
解决办法
6218
查看次数

用于希伯来字符的IOS HTTP Post编码

我需要从我的iPhone应用程序到谷歌文档进行HTTP发布.它适用于英语,但希伯来语出现了所有???????? 在谷歌文档中.

这就是我正在做的事情:

NSString *post = [Util append:@"&entry.xxxxx=", self.firstName.text, @"&entry.yyyyyyy=", self.phone.text, @"&entry.zzzzzzzz=", self.email.text, nil];
NSData *postData = [post dataUsingEncoding:NSASCIIStringEncoding allowLossyConversion:YES];
NSString *postLength = [NSString stringWithFormat:@"%d", [postData length]];

NSMutableURLRequest *request = [[NSMutableURLRequest alloc] init];
[request setURL:[NSURL URLWithString:@"https://docs.google.com/forms/d/FORM_ID/formResponse"]];
[request setHTTPMethod:@"POST"];
[request setValue:postLength forHTTPHeaderField:@"Content-Length"];
[request setValue:@"application/x-www-form-urlencoded" forHTTPHeaderField:@"Content-Type"];
[request setHTTPBody:postData];

NSHTTPURLResponse* urlResponse = nil;
NSError *error = [[NSError alloc] init];
[NSURLConnection sendSynchronousRequest:request returningResponse:&urlResponse error:&error];
Run Code Online (Sandbox Code Playgroud)

我错过了什么?

编辑:我试过这里提供的解决方案,看看ahmedalkaf的链接,但没有运气.

objective-c urlencode http-post

8
推荐指数
1
解决办法
2932
查看次数

为什么HttpUtility.UrlPathEncode标记为"不使用"?

为什么.NET for HttpUtility.UrlPathEncode for .NET 4.5 的文档说明

不使用; 仅用于浏览器兼容性.使用UrlEncode.

UrlEncode不会这样做,它为URL的参数部分编码字符串,而不是路径部分.有没有更好的方法来编码路径部分的字符串,为什么我不应该使用这个函数,这是在1.1以后的框架中工作?

.net asp.net urlencode url-encoding

8
推荐指数
1
解决办法
1358
查看次数

为什么Retrofit无法使用方括号正确编码查询字符串?

我在我的Android应用程序中使用Retrofit作为我的网络层,但是我对URL编码有疑问.

我必须像这样调用REST API:

https://my_hostname.com/some_path?q=some_query&param[0]=value1&param[1]=value2&other_param=abcd
Run Code Online (Sandbox Code Playgroud)

正如您所看到的,查询字符串由一些不同类型的参数组成,因此我决定@QueryMap在Retrofit Interface中使用注释,Map<String, String>其中where q, param[1], param[0], other_param是地图的String键

我期待什么?我希望URL中的方括号用%5Bfor '['%5Dfor 编码'[',但这不会发生.

为什么会这样?方括号应使用百分比编码进行编码.这是一个错误还是我做错了什么?我也尝试了@EncodedQueryMap没有差异的注释.

java android urlencode retrofit

8
推荐指数
1
解决办法
9119
查看次数

根据RFC4648,C#:base64url

我正在根据C#中的RFC4648寻找base64url的(快速)标准实现.

我发现HttpServerUtility.UrlTokenEncode但看起来这并不遵循RFC4648(UrlTokenEncode在末尾添加一个数字,表示=已删除的符号数量;请参阅此处此处).

例:

base64编码:

Convert.ToBase64String(System.Text.Encoding.ASCII.GetBytes( "AA")); //返回"QUE ="

base64url编码:

HttpServerUtility.UrlTokenEncode(System.Text.Encoding.ASCII.GetBytes( "AA")); //返回"QUE1",但我希望"QUE"

c# base64 urlencode url-encoding

8
推荐指数
1
解决办法
2849
查看次数

Angular对ng-src中的url进行编码,并用%2F和'?'替换'/' 与%3F

我有一个带URL的Kibana仪表板:

/logquery/app/kibana#/dashboard/Some-Dashboard?someParameters
Run Code Online (Sandbox Code Playgroud)

我有一个Web应用程序,我试图在上面嵌入仪表板<iframe>.Web应用程序中的URL如下所示

/dashboards/logquery/app/kibana#/dashboard/Some-Dashboard?someParameters
Run Code Online (Sandbox Code Playgroud)

在AngularJs中,我正在做:

ctrl.dashboardUrl = $location.url().replace('/dashboards', '');
Run Code Online (Sandbox Code Playgroud)

在我看来:

<div ng-controller="DashboardCtrl as ctrl">
    <div class="iframe-container">
        <iframe ng-src="{{ctrl.dashboardUrl | trustAsUrl}}"
                height="100%"
                width="100%"
                ng-cloak
                frameborder="0"
                marginheight="0"
                marginwidth="0"></iframe>
    </div>
</div>
Run Code Online (Sandbox Code Playgroud)

trustAsUrl 过滤器如下:

filtersGroup.filter('trustAsUrl', [
    '$sce',
    function ($sce) {
        return function (val) {
            return $sce.trustAsResourceUrl(val);
        };
    }]);
Run Code Online (Sandbox Code Playgroud)

我有:

$locationProvider.html5Mode({
                enabled: true,
                requireBase: false,
                rewriteLinks: false
            });
Run Code Online (Sandbox Code Playgroud)

这会导致/后面的字符/kibana#与被替换%2F,并?%3F导致Kibana没有能够找到所需的仪表板.

我怎么能克服这个?谢谢!

javascript encoding urlencode angularjs kibana

8
推荐指数
1
解决办法
595
查看次数