标签: httpresponse

如何使用Fiddler修改HTTP响应中的状态代码?

我需要测试一些我编写的客户端应用程序代码,以测试它对来自Web服务器的HTTP响应中返回的各种状态代码的处理.

我安装了Fiddler 2(Web调试代理),我相信有一种方法可以使用这个应用程序修改响应,但我很难找到方法.这将是最方便的方式,因为它允许我保持客户端和服务器代码不被修改.

任何人都可以协助,因为我想拦截从服务器发送到客户端的HTTP响应并在到达客户端之前修改状态代码?

任何建议将不胜感激.

http httpresponse http-status-codes fiddler

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

HTTP响应"200 OK"是否保证生成HTTP请求的计算机已收到文档?

我有两台机器,A和B.

A向B发送HTTP请求并请求某个文档.B响应并发送所请求的文档并发出200 OK消息,但是机器A抱怨由于网络故障而未收到文档.

HTTP代码200是否也可以作为收到文档的确认?

http httpresponse

44
推荐指数
4
解决办法
7688
查看次数

如何在.NET MVC 2中实现正确的HTTP错误处理?

我一整天都在努力在我的ASP.NET MVC 2应用程序中实现错误处理.我看过各种各样的技术,但都没有正常工作.我正在使用MVC2和.NET 4.0(在MVC3发布之前启动项目;我们将在发布初始版本后进行升级).

在这一点上,我将很乐意正确处理404和500错误 - 403(需要授权)也会很好,其次是各种其他特定的响应.现在,我得到所有404,全部500,全部302在404之前,或者全部302在500之前.

这是我的要求(应该非常接近HTTP的基本要求):

  • 如果找不到资源,则抛出404,并显示包含所请求URL的特定于404的页面.不要返回像302这样的中间响应代码.理想情况下,保留请求的URL,而不是显示新的URL /Error/NotFound,但如果显示后者,请确保我们没有返回重定向响应来获取它.

  • 如果发生内部服务器错误,则抛出500,并显示500特定错误,并指出出现了什么问题.同样,不要返回中间响应代码,理想情况下不要更改URL.

这是我认为的404:

  1. 找不到静态文件: /Content/non-existent-dir/non-existent-file.txt
  2. 未找到控制器: /non-existent-controller/Foo/666
  3. 找到控制器,但未找到操作: /Home/non-existent-action/666
  4. 找到控制器和操作,但操作找不到请求的对象: /Home/Login/non-existent-id

这是我认为的500:

  1. 发布一个不好的价值: POST /User/New/new-user-name-too-long-for-db-column-constraint
  2. 非数据相关问题,如Web服务端点无响应

其中一些问题需要由特定的控制器或模型识别,然后控制器应抛出适当的HttpException.其余的应该更一般地处理.

对于404情况#2,如果找不到控制器,我尝试使用自定义ControllerFactory来抛出404.对于404#3案例,我试图使用自定义基本控制器来覆盖HandleUnknownAction并抛出404.

在这两种情况下,我在404之前得到302.而且,我从来没有得到500个错误; 如果我修改Web.config以在我的Web服务端点中输入拼写错误,我仍然得到302,然后404表示无法找到使用 Web服务的URL(控制器/操作).我还将请求的URL作为(不需要的)查询字符串参数获取:/Error/NotFound?aspxerrorpath=/Home/non-existent-action

这两种技术都来自http://www.niksmit.com/wp/?p=17(如何使用ASP.Net MVC获取正常的404(找不到页面)错误页面),来自http:// richarddingwall .名称/ 2008/08/17 /为基础的战略,为资源-404-错误-在-ASPNET-MVC /

如果在我的Web.config中<customErrors mode="On" defaultRedirect="~/Error/Unknown" redirectMode="ResponseRedirect" />,我得到了相应的响应代码,但我的错误控制器永远不会被调用.取出redirectMode属性可以获得MVC错误视图,但是介入302和更改的URL - 并且始终是相同的控制器(Unknown= 500;如果我将其更改为NotFound一切看起来像404).

以下是我已阅读并尝试实施的其他一些内容:

..以及一堆StackOverflow帖子.

在我看来,这种错误处理对于Web应用程序来说是非常基本的,并且MVC框架应该具有开箱即用的默认设置,并且让人们将其扩展为其他工作.也许他们会在将来的版本中做到这一点.在此期间,有人可以向我提供有关如何实施正确HTTP响应的全面详细信息吗?

error-handling asp.net-mvc http httpresponse asp.net-mvc-2

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

在HTTP错误期间以任何方式获取响应主体?

我正在点击偶尔会抛出HTTP 403错误的API,响应机构可以以json的形式提供一些额外的信息,但是对于我的生活,我似乎无法从Alamofire中获取信息响应对象.如果我通过chrome访问API,我会在开发人员工具中看到这些信息.这是我的代码:

Alamofire.request(mutableURLRequest).validate().responseJSON() {
    (response) in
    switch response.result {
        case .Success(let data):
            if let jsonResult = data as? NSDictionary {
                completion(jsonResult, error: nil)
            } else if let jsonArray = data as? NSArray {
                let jsonResult = ["array" : jsonArray]
                completion(jsonResult, error: nil)
            }
        case .Failure(let error):
            //error tells me 403
            //response.result.data can't be cast to NSDictionary or NSArray like
            //the successful cases, how do I get the response body?
    }
Run Code Online (Sandbox Code Playgroud)

我几乎查询了附加到响应的每个对象,但是在HTTP错误的情况下它似乎没有给我回复响应主体.有没有解决方法或我在这里缺少的东西?

httpresponse http-status-code-403 ios swift alamofire

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

将MemoryStream写入响应对象

我正在使用以下代码来流式传输一个MemoryStream对象中的pptx,但是当我打开它时,我在PowerPoint中获得了修复消息,将MemoryStream写入响应对象的正确方法是什么?

HttpResponse response = HttpContext.Current.Response;
response.Clear();
response.AppendHeader("Content-Type", "application/vnd.openxmlformats-officedocument.presentationml.presentation");
response.AppendHeader("Content-Disposition", string.Format("attachment;filename={0}.pptx;", getLegalFileName(CurrentPresentation.Presentation_NM)));                
response.BinaryWrite(masterPresentation.ToArray());
response.End();
Run Code Online (Sandbox Code Playgroud)

c# asp.net httpresponse

37
推荐指数
3
解决办法
9万
查看次数

setcookie,无法修改标题信息 - 已发送的标题

我是PHP的新手,我刚刚练习PHP setcookie()并且失败了.

http:// localhost/test/index.php

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title></title>

    </head>
    <body>
     <?php
     $value = 'something from somewhere';

     setcookie("TestCookie", $value);
     ?>
    </body>
</html>
Run Code Online (Sandbox Code Playgroud)

http:// localhost/test/view.php

<?php
 // I plan to view the cookie value via view.php
 echo $_COOKIE["TestCookie"];

?>
Run Code Online (Sandbox Code Playgroud)

但我没能运行index.php,这样的IE警告.

Warning: Cannot modify header information - headers already sent by (output started at C:\xampp\htdocs\test\index.php:9) in C:\xampp\htdocs\test\index.php on line 12
Run Code Online (Sandbox Code Playgroud)

毫无疑问,我启用了IE 6 cookie.

上面的程序有什么问题吗?谢谢.

使用WinXP OS和XAMPP 1.7.3.

php cookies http httpresponse

36
推荐指数
5
解决办法
9万
查看次数

在Java Servlet应用程序中为HTTP 201响应设置Location标头的正确方法是什么

请考虑以下代码向客户端发送HTTP 201"创建"响应:

    String url = "/app/things?id=42"; // example
    response.setStatus(HttpServletResponse.SC_CREATED);
    response.setContentType("text/plain");
    response.setHeader("Location", url);
    response.getWriter().print(url);
Run Code Online (Sandbox Code Playgroud)

它通知客户端创建了一个新的"东西",并且可以在URL上找到它/app/things?id=42.问题是这个URL是相对的.这对于JSP来说是完美的,可以写成如下:

<img src="<c:url value="/things?id=42" />" />
Run Code Online (Sandbox Code Playgroud)

哪个会产生以下HTML:

<img src="/app/things?id=42" />
Run Code Online (Sandbox Code Playgroud)

这是我们想要的网络应用程序.

但我不相信这是我们想要的201响应位置标题.HTTP规范声明:

14.30位置

Location response-header字段用于将收件人重定向到Request-URI以外的位置,以完成请求或标识新资源.对于201(已创建)响应,Location是请求创建的新资源的位置.对于3xx响应,位置应该应该指示服务器自动重定向到资源的首选URI.字段值由单个绝对URI组成.

       Location = "Location" ":" absoluteURI
Run Code Online (Sandbox Code Playgroud)

一个例子是:

       Location: http://www.w3.org/pub/WWW/People.html
Run Code Online (Sandbox Code Playgroud)

我的问题是如何以适当的方式将servlet的相对URL转换为Location头的绝对URL.

我不相信使用:

request.getServerName() + ":" + request.getServerPort() + url;
Run Code Online (Sandbox Code Playgroud)

是正确的解决方案.应该有一个生成正确输出的标准方法(以便可以应用URL重写等).我不想创建一个hack.

java servlets http httpresponse http-headers

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

jQuery - 获取AJAX响应头

当我们使用jQuery触发ajax请求时,我们如何访问响应头?我根据某些网站提供的建议尝试使用以下代码.但是xhr对象将变为空.我xhr在这种情况下看到了一个对象.但它没有访问响应头的方法.

    function SampleMethod(){
    var savedThis=this;
        this.invokeProcedure=function(procedurePath){
            $.ajax({
                    type: "GET",
                    url: procedurePath,
                    dataType: "json",
                    success: function(data,status,xhr){savedThis.resultSetHandler(data,status,xhr);}
                });
        }

        this.resultSetHandler=function(data,status,xhrObj){
            //Handle the result
        }

        this.errorHandler=function(args){
            //Handle the result
        }

    }

var sampleObj=new SampleMethod();
sampleObj.invokeProcedure('url');
Run Code Online (Sandbox Code Playgroud)

jquery httpresponse

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

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

mp3下载响应的内容类型

我创建了一个简单的HTTP服务器,允许用户下载文件.但这似乎不适用于mp3文件.目前的内容类型是"application/misc".为了使它与mp3文件一起使用,我试过了"application/mp3","application/data"并且"application/mpeg".

什么是正确的MP3或音频文件下载内容类型,我错过了一些其他标题?


编辑:文件应自动开始下载,而不是提示用户将其保存在某处.

mp3 httpresponse http-headers

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