【问题标题】:HttpWebRequest Returns 404, but not in original websiteHttpWebRequest 返回 404,但在原始网站中没有
【发布时间】:2011-10-30 06:45:35
【问题描述】:

我查看了网站的幕后情况(大量的 jQuery-ajax/json),并且能够使用 c# WinForms 中的 HttpWebRequest 自动登录以及执行其他一些任务。该过程在需要参数的地方做了一些帖子,都成功了。

问题来自一个特定的请求。下面是我在给我问题的网站中找到的 ajax 代码。我希望这能在我的应用程序中工作,但我在发送请求时收到 WebException - 404 Not Found 错误。

$.ajax({
        type: 'POST',
        url: switchUrl,
        data: {
            index: index,
            xstoken: Cookie.read('xstoken')
        },
        global: false,
        success: function(content) {
            //code refreshes page here.
}

当我通过我的应用程序请求而不是通过站点本身请求时,什么会使服务器返回 404?我可能缺少其他参数吗?我使用 Chrome 来查看发送的内容,但据我所知,我拥有一切。

  • 所有 Cookie 均已设置,其他请求响应正常。
  • 所有请求都是 https,不确定这是否重要。
  • 尝试了不同的用户代理。

【问题讨论】:

    标签: c# jquery ajax httpwebrequest http-status-code-404


    【解决方案1】:

    需要检查/试验的几点:

    • 调用成功时查看switchurl / index / Cookie xstoken的值是什么
    • 看看引用者是什么并模仿它
    • 将 index 的值和 Cookie xstoken 放入 POST 正文中
      如果这无助于将这些作为查询字符串放入 switchurl 中

    如果所有这些都不能帮助使用 Fiddler(请参阅 http://www.fiddler2.com/fiddler2/)或 Wireshark 在成功时捕获实际通信...

    【讨论】:

    • Fiddler 的 +1,特别是因为它可以是比较您的 http 请求和浏览器请求的好方法,它也可以重放请求。
    • 我会在早上尝试 Fiddler。我有 Wireshark,但所有请求都是 HTTPS,也许没关系,但我无法破译输出。请注意,每个会话的 xstoken i 都是唯一的,并且也存在于 cookie 中。
    • 以上所有点都以一种或另一种方式尝试过。 Fiddler 很好,但和 Wireshark 一样神秘,可能只需要花更多时间来研究它。仍然不知道为什么这不起作用。
    • 请解释一下“神秘”是什么意思?这很简单:您选择应用程序发送的请求,同时选择浏览器发送的请求,然后右键单击并选择“比较”。您记下这些差异,然后在应用程序中修复它们,以便应用程序准确地发送浏览器所做的事情。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-14
    • 1970-01-01
    相关资源
    最近更新 更多