специальные символы в URL дают "Bad Request" или "Недопустимые символы в пути" - PullRequest
0 голосов
/ 07 сентября 2010

Я использую JavaScript для запроса изображения, сгенерированного сервером в режиме реального времени.

Параметр передается в URL и захватывается MVC и устанавливается в параметре «id» для контроллера.Как это:

Public Function Index(ByVal id As String) As ActionResult

Это прекрасно работает, если я не использую какие-либо специальные символы, такие как "?"или цитаты.Чтобы отправить тех, кому я должен экранировать или закодировать этот контент, но как мне это сделать?

Я пробовал javascript escape или encodeURIComponent, но он либо выдает мне «неверный запрос» или «Недопустимые символы впуть "

Пример URL будет http://localhost/Imagem/Index/Question%3F, для" Вопрос? "

Это возвращает" Плохой запрос "

Ответы [ 3 ]

5 голосов
/ 07 сентября 2010

Вы можете найти этот пост полезным.Как вы увидите, есть обходные пути, но используйте на свой страх и риск.Добавьте это в ваш web.config, если вы используете .NET 4.0:

<system.web>
    <httpRuntime 
        requestValidationMode="2.0"
        requestPathInvalidCharacters="&lt;,&gt;,*,%,:,&amp;,\"
        relaxedUrlToFileSystemMapping="true"
    />
    ...
</system.web>

<system.webServer>
    <security>
        <requestFiltering allowDoubleEscaping="true" />
    </security>
    ...
</system.webServer>

Лично я бы рекомендовал вам не использовать специальные символы в URL-адресе, подобном этому.Вы можете преобразовать их в какой-либо другой символ, используя функцию отображения, или использовать их только в параметре строки запроса: http://localhost/Imagem/Index?id=Question%3F

0 голосов
/ 07 сентября 2010

Спасибо за ответы, но я обошел это, используя escape, а затем преобразовал символы % во что-то, что позже в коде моего сервера сменится на% и сам не будет.клиентский скрипт:

myImg.src = "../../Imagem/Index/" + escape(myValue).replace(/\%/g, "_-_");

В контроллере:

Public Function Index(ByVal id As String) As ActionResult
    id = id.Replace("_-_", "%")
    id = HttpUtility.UrlDecode(id, System.Text.Encoding.Default())
    Return New ImageResult(CreateImage(id))
End Function
0 голосов
/ 07 сентября 2010

Вы пытаетесь получить доступ к файлу изображения, созданному сервером во время выполнения.

В приведенном выше вопросе вы пытаетесь получить доступ к файлу изображения как Вопросы?

В файле изображения или любом другом файле не будет специального знака, поэтому я думаю, что это очень очевидная ошибка - - недопустимые символы в пути.

...