【问题标题】:url decoding in asp.netasp.net中的url解码
【发布时间】:2011-12-22 20:06:15
【问题描述】:

我在 asp.net 中有一个带有几个文本框的表单。我正在尝试使用 jquery ajax 将其中的值发布到服务器,但是遇到了问题。我正在使用 javascript encodeURIComponent 作为文本框的值,然后发布,但我看到 url 是自动编码的:

wanted result:
mylefturl/first%20name/last%20name

this is what's actually happenning:
mylefturl/first name/last name

所以我得到一个 asp.net 错误...

我的 javascript 代码:

var firstName = $("#SignupFirstName").val();
            var lastName = $("#SignupLastName").val();
            var email = $("#SignupEmail").val();
            var password = $("#SignupPassword").val();

            var url = '/Ajax/GetSignup/' + encodeURIComponent(firstName) + '/' + encodeURIComponent(lastName) + '/' + encodeURIComponent(email) + '/' + encodeURIComponent(password);
$.ajax({
                    url: u,
...

解决办法是什么?

【问题讨论】:

  • 一切似乎都很好。 Here 就是一个例子。可能还有另一个错误。你能发布更多你的代码吗?
  • 当我尝试在 asp.net 中调用编码后的 url 时,问题实际上出现了,所以它似乎在自动解码它,将其转换为上面的示例:mylefturl/first[space]name /last[space]name, asp.net 有url解码机制吗?

标签: javascript jquery asp.net-4.0 urldecode encodeuricomponent


【解决方案1】:

我建议您在发送 AJAX 调用时使用data 参数:

var firstName = $("#SignupFirstName").val(),
    lastName = $("#SignupLastName").val(),
    email = $("#SignupEmail").val(),
    password = $("#SignupPassword").val();

$.ajax({
    url: '/Ajax/GetSignup/',
    type: 'POST',
    data: { 
        firstName: firstName, 
        lastName: lastName, 
        email: email, 
        password: password 
    },
    success: function(result) {
        // TODO: process the results from the AJAX call
    }
});

现在 jQuery 将负责正确地对发送到服务器的值进行 url 编码。这些值将作为 POST 有效负载的一部分而不是 url 发送。这是确保它们正确到达服务器的最安全方法。我建议您避免使用用户输入的值作为 url 路径的一部分。看看following question,了解如果你走这条路可能会遇到什么困难。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-01-12
    • 1970-01-01
    • 2022-12-11
    • 2012-05-02
    • 1970-01-01
    • 2010-11-20
    • 1970-01-01
    相关资源
    最近更新 更多