我有一个API调用,我需要能够运行一些检查,并可能返回各种状态代码。 我不需要自定义视图或任何东西,我只需要返回正确的代码。 如果用户没有通过适当的凭据,我需要返回401状态。 如果他们还没有发送支持的请求格式,我需要返回400状态。 因为这是一个API,我真正想要做的就是设置响应状态并退出一个简单,愚蠢的消息,说明为什么请求失败(可能使用exit )。 刚好足够完成工作,但我一直没有能够得到这个工作的权利。 我试过使用PHP的header()和Cake的$this->header() (这全部在控制器中),但是虽然我得到了退出消息,但是头部显示了200 OK状态。 使用下面的代码,我得到的消息,但头没有设置。 我错过了什么? if( !$this->auth_api() ) { header( '401 Not Authorized' ); exit( 'Not authorized' ); }
所以,我需要devise一个RESTful查询API,它基于几个filter返回一组对象。 通常的HTTP方法是GET。 唯一的问题是,它可以有至less十几个filter,如果我们把它们全部作为查询parameter passing,那么这个URL可能会变得很长(足够长的时间可以被一些防火墙阻止)。 减less参数的数量不是一个选项。 我可以想到的一个替代方法是在URI上使用POST方法,并将filter作为POST主体的一部分发送。 这是反对RESTfull(进行POST调用查询数据)。 任何人有更好的devisebuild议? 谢谢
我正在寻找什么是正确的方式传递GET请求中相同的参数名称的多个值。 我已经看到这样的url: http://server/action?id=a&id=b 我也看到了这样的url: http://server/action?id=a,b 我的理解是第一个是正确的,但我找不到任何参考。 我看了一下http规范,但看不到任何有关如何组成URL的“查询”部分。 我不想要一个答案,说:“要么罚款” – 如果我build立一个Web服务,我想知道哪些方法是标准的,以便使用我的Web服务的人知道如何传递多个参数为相同的名称。 那么,有人能指出我在一个官方的参考来源,以确认哪个选项是正确的?
我如何configuration用户名和密码来validation使用Java的HTTP代理服务器? 我刚刚发现了以下configuration参数: http.proxyHost=<proxyAddress> http.proxyPort=<proxyPort> https.proxyHost=<proxyAddress> https.proxyPort=<proxyPort> 但是,我的代理服务器需要authentication。 我怎样才能configuration我的应用程序使用代理服务器?
我试图设置接受HTTP标头“text / xml”与此jquery代码: $.ajax({ beforeSend: function(req) { req.setRequestHeader("Accept", "text/xml"); }, type: "GET", url: "[proper url]", contentType: "text/plain; charset=utf-8", dataType: ($.browser.msie) ? "text" : "xml", username: '—', password: '——-', success: function(data) { var xml; if (typeof data == "string") { alert("Data is string:" + data); xml = new ActiveXObject("Microsoft.XMLDOM"); xml.async = false; xml.loadXML(data); } else { […]
我被告知要防止用户信息泄漏,只有响应中的“no-cache”是不够的。 “无店”也是必要的。 Cache-Control: no-cache, no-store 在阅读了这个规范http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html之后 ,我还不太清楚为什么。 我目前的理解是,它只是用于中间caching服务器。 即使“no-cache”正在响应,中间caching服务器仍然可以将内容保存到非易失性存储器中。 中间caching服务器将决定是否将保存的内容用于以下请求。 但是,如果响应中存在“无存储”,则中间caching服务器不应该存储该内容。 所以更安全 有没有其他的原因,我们需要“无caching”和“无存储”?
我一直试图发送一个HttpPost请求和检索响应,但即使我能够build立连接,我还没有得到如何获取请求响应返回的string消息 HttpClient httpclient = new DefaultHttpClient(); HttpPost httppost = new HttpPost("http://www.myurl.com/app/page.php"); // Add your data List < NameValuePair > nameValuePairs = new ArrayList < NameValuePair > (5); nameValuePairs.add(new BasicNameValuePair("type", "20")); nameValuePairs.add(new BasicNameValuePair("mob", "919895865899")); nameValuePairs.add(new BasicNameValuePair("pack", "0")); nameValuePairs.add(new BasicNameValuePair("exchk", "1")); try { httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs)); Log.d("myapp", "works till here. 2"); try { HttpResponse response = httpclient.execute(httppost); Log.d("myapp", […]
使用template包为客户端生成一个dynamic网页时,速度非常慢。 testing代码如下,golang 1.4.1 http.Handle("/js/", (http.FileServer(http.Dir(webpath)))) http.Handle("/css/", (http.FileServer(http.Dir(webpath)))) http.Handle("/img/", (http.FileServer(http.Dir(webpath)))) http.HandleFunc("/test", TestHandler) func TestHandler(w http.ResponseWriter, r *http.Request) { Log.Info("Entering TestHandler …") r.ParseForm() filename := NiConfig.webpath + "/test.html" t, err := template.ParseFiles(filename) if err != nil { Log.Error("template.ParseFiles err = %v", err) } t.Execute(w, nil) } 根据日志,我发现t.Execute(w, nil)花了大约3秒钟,我不知道为什么它使用这么多的时间。 我也尝试过Apache服务器来testingtest.html ,它的响应速度非常快。
我一直在通过微软的ASP.NET MVC教程,结束在这个页面 http://www.asp.net/learn/mvc/tutorial-32-cs.aspx 以下是对本页底部的说明: 通常,在调用修改Web应用程序状态的操作时,您不希望执行HTTP GET操作。 执行删除时,您想要执行HTTP POST,或者更好的是执行HTTP DELETE操作。 这是真的? 任何人都可以为这个陈述背后的理由提供更详细的解释吗? 编辑 维基百科声明如下: 有些方法(例如,HEAD,GET,OPTIONS和TRACE)被定义为安全的,这意味着它们仅用于信息检索,不应该改变服务器的状态。 相比之下,诸如POST,PUT和DELETE等方法用于可能会在服务器上导致副作用的操作
如果web服务器可以发送gzip响应,为什么浏览器不能发送gzip请求?