使用纯HTTP,无cookie域是一种优化,可以避免不必要地为页面资源发送cookie头.
但是,SPDY协议会压缩HTTP标头,并在某些情况下会消除不必要的标头.我的问题是,SPDY是否使无Cookie域无关紧要?
此外,页面源及其所有资源是否应托管在同一域中以优化SPDY实现?
我对Web浏览器的基本身份验证有点困惑.我原以为Web浏览器只会在上一个响应中收到HTTP 401状态后发送Authorization标头.但是,Chrome似乎会随后向每个请求发送Authorization标头.它有一次我输入的数据,以响应我网站上的401,并随每条消息一起发送(根据Chrome和我的网络服务器附带的开发人员工具).这是预期的行为吗?是否有一些标题我应该用我的401来推断授权的东西不应该被缓存?我目前正在使用WWW-Authenticate标头.
iis basic-authentication http-headers wcf-data-services http-status-code-401
请求删除不存在的对象时应返回什么状态码?
public ContentResult DeleteEntity(int id, FormCollection FormData)
{
Database db = new Database();
TargetEntity te = db.TargetEntities.SingleOrDefault(t => t.Id == id);
if(te == null)
{
Reponse.StatusCode = 400; //Is this correct?
return Content("Deletion failed. Invalid ID: " + id);
}
//Delete the entity
return Content("Successfully Deleted");
}
Run Code Online (Sandbox Code Playgroud)
该请求本身很好,只是发生了指定的ID无效(或该项目已被删除)的情况,因此我不确定400的范围。我敢肯定,这500个代码甚至不适合此代码,因为服务器上没有出错(只是要求删除不存在的内容)。
哪种状态码在这里最合适?
我已经看到很多教程和问题使用以下方法从Android发送JSON对象到PHP.例如这个wordpress博客,这个代码项目教程和stackoverflow上的一些答案就像这些.
所有这些教程和答案都使用HTTP标头将数据(正文)发送到PHP.
....
// Post the data:
httppost.setHeader("json",json.toString());
....
Run Code Online (Sandbox Code Playgroud)
作为程序员,我们都知道标题不是为了携带数据(正文).标题应该只包含元数据.
那么,有没有一种正确的方法从Android发送JSON数据到PHP,而不涉及在头文件中设置数据?
一切都工作正常突然我开始在所有页面上得到这个Open Graph错误:
https://developers.facebook.com/tools/debug/og/object?q=http%3A%2F%2Fn-pix.com%2F
我从其他问题中尝试了许多建议,但还没有任何效果.
如果我从页面保存静态HTML并将其加载到Open Graph调试器上,一切都很完美:
https://developers.facebook.com/tools/debug/og/object?q=http%3A%2F%2Fn-pix.com%2Fogtest.html
有什么建议?也许标题有问题?
facebook http-headers opengraph facebook-graph-api facebook-opengraph
说我有以下HTTP请求:
GET /4 HTTP/1.1
Host: graph.facebook.com
Run Code Online (Sandbox Code Playgroud)
并且服务器返回以下响应:
HTTP/1.1 200 OK
Access-Control-Allow-Origin: *
Cache-Control: private, no-cache, no-store, must-revalidate
Content-Type: text/javascript; charset=UTF-8
ETag: "539feb8aee5c3d20a2ebacd02db380b27243b255"
Expires: Sat, 01 Jan 2000 00:00:00 GMT
Pragma: no-cache
X-FB-Rev: 1070755
X-FB-Debug: pC4b0ONpdhLwBn6jcabovcZf44bkfKSEguNsVKuSI1I=
Date: Wed, 08 Jan 2014 01:22:36 GMT
Connection: keep-alive
Content-Length: 172
{"id":"4","name":"Mark Zuckerberg","first_name":"Mark","last_name":"Zuckerberg","link":"http:\/\/www.facebook.com\/zuck","username":"zuck","gender":"male","locale":"en_US"}
Run Code Online (Sandbox Code Playgroud)
由于Content-Lengh标题取决于内容的长度,我不能简单地用Content-Length: 172字符串分割 .如何单独提取JSON和标头?它们对我的计划都很重要.我正在使用此代码来获取响应:
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect(("graph.facebook.com", 80))
s.send("GET /"+str(id)+"/picture HTTP/1.1\r\nHost: graph.facebook.com\r\n\r\n")
data = s.recv(1024)
s.close()
json_string = (somehow extract this)
userdata = json.loads(json_string)
Run Code Online (Sandbox Code Playgroud) 我在Python中使用'requests'模块来查询RESTful API端点.有时,端点返回HTTP错误500.我意识到我可以使用requests.status_code获取状态代码但是当我收到错误500时,我想看到HTTP"响应文本"(我不确定它叫什么,以下例子).到目前为止,我已经能够使用response.headers获取一些头文件.但是,我正在寻找的信息仍然不存在.
使用"curl -vvv",我可以看到我之后的HTTP响应(为清楚起见省略了一些输出):
< HTTP/1.1 200 OK <---------------------this is what I'm after)
* Server nginx/1.4.1 is not blacklisted
< Server: nginx/1.4.1
< Date: Wed, 05 Feb 2014 16:13:25 GMT
< Content-Type: application/octet-stream
< Connection: close
< Set-Cookie: webapp.session.id="mYzk5NTc0MDZkYjcxZjU4NmM=|1391616805|f83c47a363194c1ae18e"; expires=Fri, 07 Mar 2014 16:13:25 GMT; Path=/
< Content-Disposition: attachment; filename = "download_2014161325.pdf"
< Cache-Control: public
Run Code Online (Sandbox Code Playgroud)
再次,这是从卷曲.现在,当我使用Python的请求模块并询问标题时,这就是我得到的:
CaseInsensitiveDict(
{
'date': 'Tue, 04 Feb 2014 21:56:45 GMT',
'set-cookie': 'webapp.session.id="xODgzNThlODkzZ2U0ZTg=|1391551005|a11ca2ad11195351f636fef"; expires=Thu, 06 Mar 2014 21:56:45 GMT; Path=/,
'connection': 'close',
'content-type': 'application/json',
'server': 'nginx/1.4.1' …Run Code Online (Sandbox Code Playgroud) 我正在构建一个chrome扩展程序,我在Gmail主页的弹出窗口中显示iframe.由于Gmail主页采用HTTPS格式,因此我的iframe也应采用https格式.我通过启用mod_ssl配置了apache2,并在apache2上运行了HTTPS.我制作了一个原生的PHP页面,并尝试在Gmail页面上的框架上显示该页面.我没有遇到从localhost加载页面的问题.但是当我想使用Laravel后端时,它显示了错误.
Refused to display 'https://localhost/laravel/laravel/public/index.php/chromelogin' in a frame because it set 'X-Frame-Options' to 'SAMEORIGIN'.
有什么建议??
我正在尝试构建http请求体,它会将图像以及一些参数从android设备发送到服务器.
现在发送一个像它应该的图像工作,这是代码的一部分,为此目的放逐http请求体
conn.setDoInput(true); // Allow Inputs
conn.setDoOutput(true); // Allow Outputs
conn.setUseCaches(false); // Don't use a Cached Copy
conn.setRequestMethod("POST");
conn.setRequestProperty("Connection", "Keep-Alive");
conn.setRequestProperty("ENCTYPE", "multipart/form-data");
conn.setRequestProperty("Content-Type",
"multipart/form-data;boundary=" + boundary);
conn.setRequestProperty("uploaded_file", fileName);
dos = new DataOutputStream(conn.getOutputStream());
dos.writeBytes(twoHyphens + boundary + lineEnd);
dos.writeBytes("Content-Disposition: form-data; name=\"uploaded_file\"; filename=\""
+ fileName + "\"" + lineEnd);
Run Code Online (Sandbox Code Playgroud)
我每次尝试添加我将从POST数组中检索的参数都是不成功的,但一般我尝试的是添加这个:
dos.writeBytes(twoHyphens + boundary + lineEnd);
dos.writeBytes("Content-Disposition: form-data; name=\"param1\"");
dos.writeBytes(lineEnd);
Run Code Online (Sandbox Code Playgroud)
这是朝着正确方向迈出的一步吗?
我在ADA中通过套接字发送标题时出现问题.这是代码:
Address.Addr := Addresses(Get_Host_By_Name(Host_Name), 1);
Address.Port := 80;
Create_Socket(Server);
Set_Socket_Option(Server, Socket_Level, (Reuse_Address, True));
Bind_Socket(Server, Address);
Listen_Socket(Server);
Accept_Socket(Server, Socket, Address);
Channel := Stream(Socket);
Receive_Socket(Socket, Data, Offset);
for I in 1 .. Offset loop
Append(Request, Character'Val(Data(I)));
end loop;
String'Output(Channel,
"HTTP/1.1 200 OK" & CRLF &
"Date: Fri, 09 Jan 2015 01:08:54 GMT" & CRLF & CRLF &
"something"
);
Run Code Online (Sandbox Code Playgroud)
我用作客户端Firefox浏览器.当我通过套接字读取GET请求时,这一切都很棒.当我尝试发送响应时,问题出现了.在引用代码的最后一行之后,我的浏览器只获得HTTP/0.9 200 OK(通过Live HTTP头检查)并且根本没有显示任何内容(这对我来说有点奇怪,因为我只是发送HTTP/1.1 200 OK).
真的很感激一点帮助.提前致谢 :)