我编写了ASP.NET(4.0)代码,如果发布到服务器的数据有效,则将Response.StatusCode设置为400.
我以请求接受标头要求的格式在响应正文中放置有用的信息.例如,一条html消息说"需要日期字段......".
在Windows 7上的IIS7(7.5.7600)中,我将正确的html响应返回给浏览器.
在Windows 2008上的IIS7(7.5.6000)中,我没有得到html主体,但只有一个带有"错误请求"的文本正文作为内容.
有人能指出我如何更改2008服务器的配置以返回正文.
或者这些版本的IIS之间有区别吗?
也许是Machine.config中的一个模块?
例如,我知道(并且必须解决)FormsAuthentication模块将401更改为302,即使您不想这样做.可能有一个模块停止发送400的内容.
TIA.
使用WebRequest我想知道我是否得到了
"302暂时移动"
响应而不是自动获取新网址.
我正在开发一个API,它也有一个身份验证/授权组件.
任何人,无论身份验证状态如何,都可以写(POST),但取决于您是否未经身份验证,作为普通用户进行身份验证或作为管理员进行身份验证以及您尝试访问的资源我将返回不同的响应用于GET,DELETE和PUT.
我正在尝试为未经过身份验证和/或授权的用户找出最合适的响应代码.
请记住http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html:
未经授权 - > 401
禁止 - > 403
方法不允许 - > 405
让我们使用一个具体的例子:
(请记住,即使John和Amy被禁止或未经授权,并不意味着他们无法使用不同的HTTP VERB访问相同的资源.)
谢谢.
在WebAPI中,假设我返回一个包含在HTTP响应中的字符串:
return Request.CreateResponse(HttpStatusCode.BadRequest, "Line1 \r\n Line2");
Run Code Online (Sandbox Code Playgroud)
从jQuery调用此操作时,响应文本将在返回之前得到处理.所以在xhr中,我得到这样的东西:
function success(xhr) {
alert(xhr.responseText); // alerts ""Line1 \\r\\n Line2""
}
Run Code Online (Sandbox Code Playgroud)
换句话说,字符串用双引号括起来,特殊字符被转义,以便它们出现在输出中(实际警报是"Line1\r \n Line2",因此新行不会被保留,而是编码并显示在响应文本).
我可以通过删除引号并替换客户端上的换行符来解决这个问题:
var responseText = xhr.responseText.substr(1, xhr.responseText - 2)
.replace('\\r', '\r').replace('\\n', '\n');
Run Code Online (Sandbox Code Playgroud)
但有没有办法告诉WebAPI如何格式化字符串响应?例如,不要用双引号将它们包装起来并转换转义字符?
在ASP.NET webapi中,我将一个临时文件发送到客户端.我打开一个流来读取文件并在HttpResponseMessage上使用StreamContent.一旦客户端收到文件,我想删除这个临时文件(没有来自客户端的任何其他调用)一旦客户端收到文件,就会调用HttpResponseMessage的Dispose方法,并且还会处理流.现在,我想删除临时文件.
一种方法是从HttpResponseMessage类派生一个类,重写Dispose方法,删除该文件并调用基类的dispose方法.(我还没有尝试过,所以不知道这是否有效)
我想知道是否有更好的方法来实现这一目标.
在我看来,为了测试处理恶意响应的客户端代码,拥有一个总是返回500的URL是有用的.而且我可以想到其他项目可以从总是返回404,重定向等的URL中受益.是否有人知道提供此功能的免费网站?
我试图在我的GWT应用程序中通过servlet获取请求.在编译代码时,我收到了这些错误.
[ERROR] Line 16: No source code is available for type org.apache.http.client.ClientProtocolException; did you forget to inherit a required module?
[ERROR] Line 16: No source code is available for type org.apache.http.ParseException; did you forget to inherit a required module?
[ERROR] Line 16: No source code is available for type org.json.simple.parser.ParseException; did you forget to inherit a required module?
Run Code Online (Sandbox Code Playgroud)
我该怎么做才能消除这些错误?GWT不支持这些类吗?
以下是我正在使用的代码
public String getJSON() throws ClientProtocolException, IOException, ParseException{
HttpClient httpclient = new DefaultHttpClient();
JSONParser parser = new JSONParser();
String url = …Run Code Online (Sandbox Code Playgroud) 我有2个资源用户和相册.用户有一个专辑列表.要获得专辑,有2个REST API.
我们已经知道如何notFoundHandler在Slim 3中添加自定义404 :
$container['notFoundHandler'] = function ($c) {
return function ($request, $response) use ($c) {
return $c->view->render($response, 'pages/404.html.twig')
->withStatus(404)
->withHeader('Content-Type', 'text/html');
};
};
Run Code Online (Sandbox Code Playgroud)
我想在我的一条路线中手动触发.
在Slim 2中,我们能够做类似的事情$app->notFound().Slim 3中的等价物是什么?
fetch()返回promise(如果成功)解析为Response对象的promise .一个非常常见的事情是立即调用Response.json()将响应体转换为JSON对象.
如果响应主体无效JSON,则Response.json()承诺失败并显示错误.消息是这样的:
位于0的JSON中出现意外的标记X.
在尝试诊断问题时,这不是很有用; 理想情况下,我希望能够从服务器中看到内容(这通常是一条错误消息).
但是,您似乎只能Response.body一次阅读流(至少在Chrome中).(甚至还有一个只读Response.bodyUsed标志.)当Response.json()尝试将主体转换为JSON 时已经发生这种情况,因此在JSON解析失败的情况下,主体似乎永远丢失.
有没有办法恢复原始的响应体...当原始的fetchPromise结算时,没有手动读取它(然后转换为JSON)?