我记得曾见过somwhere可以告诉用户来自网站的位置.更具体地说,我想确定导致我网站的(Google等)搜索.我怎样才能做到这一点?
据我所知HTTP协议,在GET请求中没有这样的东西发送到服务器,所以我也想知道它是如何在技术上完成的.
当他们发现不同的状态代码时会做什么搜索?
我知道他们会忽略404状态代码的页面,但其他状态呢
搜索引擎会抓取源页面还是目标页面?
我正在尝试使用CGI脚本接受并保存使用HTTP POST发送zip文件的程序中的文件.
在HTTP标头的MIME部分,它看起来像这样:
Content-Disposition: form-data; name="el_upload_file_0"; filename="BugReport.zip";\r\n
Content-Type: application/octet-stream\r\n\r\n
Run Code Online (Sandbox Code Playgroud)
在我的CGI代码中我使用了这个:
use CGI;
use strict;
my $cgi = CGI->new;
my $upload_file = $cgi->upload('el_upload_file_0');
my $time = time;
my $filename = "/tmp/$time.zip";
open TMP, ">$filename";
binmode TMP;
while (<$upload_file>) {
print TMP $_;
}
close TMP;
Run Code Online (Sandbox Code Playgroud)
不断保存的文件以某种方式损坏并且不是有效的zip文件.HTTP请求是由C#应用程序发送的,它可能正在发送损坏的zip文件,但我对此表示怀疑.我有什么办法可以进一步排除故障吗?
POST是否比GET更紧凑,因为GET请求必须是URL编码的?
我正在尝试使用Firefox 3.5和Chrome中实现的HTML5音频元素制作基于Web的媒体播放器.阅读Mozillas文档,省略autobuffer属性应该导致音频src没有被请求:
如果指定,即使没有设置为自动播放,音频也会自动开始下载.这将继续,直到媒体缓存已满,或者已下载整个音频文件,以先到者为准
但是,在服务器端,我注意到正在请求文件.我的示例页面非常简单:
<html>
<body>
<audio src="1.ogg"></audio>
<audio src="2.ogg"></audio>
</body>
</html>
Run Code Online (Sandbox Code Playgroud) 到目前为止,我有一个简单的本地服务课程.我想要做的是从我的应用程序中的不同活动发送请求到本地服务.根据这些请求的参数,服务将通过HttpClient连接到Web服务器并接收JSONObject并将其返回给活动.所有HTTP通信都已在我的活动中工作,但我希望它现在在我的本地服务中的一个单独的线程中运行.
到目前为止,我非常简单的本地服务的源代码如下所示:
// BackgroundService.java
package com.test.localservice;
import android.app.Service;
import android.content.Intent;
import android.os.IBinder;
import android.util.Log;
public class BackgroundService extends Service
{
@Override
public void onCreate() {
super.onCreate();
Log.i("BackgroundService", "onCreate()");
Thread thr = new Thread(null, new RunThread(), "BackgroundService");
thr.start();
}
class RunThread implements Runnable
{
public void run() {
Log.i("BackgroundService", "run()");
/* Here the HTTP JSON communication is going to happen */
//BackgroundService.this.stopSelf();
}
}
@Override
public void onDestroy()
{
Log.i("BackgroundService", "onDestroy()");
super.onDestroy();
}
@Override …Run Code Online (Sandbox Code Playgroud) 我在PHP中发送标题时遇到了一个令人哭笑不得的问题.我花了大约45分钟在SO和其他网站上阅读,我无法想出我的问题的正当理由.
我需要向另一台服务器发送POST请求,我正在使用PHP header()函数来设置值.我有以下示例代码.
$server = 'http://fakedomain.com';
$server_path = '/';
$request = 'key=value&key2=value2';
header("POST $server_path HTTP/1.1" );
header("Host: $server\r\n" );
header("Content-type: application/x-www-form-urlencoded\r\n" );
header("Content-length: ".strlen($request)."\r\n" );
header("Connection: close\r\n\r\n" );
header($request);
Run Code Online (Sandbox Code Playgroud)
我尝试了各种选项,但每个选项都会在我的日志文件中导致相同的错误
malformed header from script. Bad header=POST / HTTP/1.1: php5.cgi
Run Code Online (Sandbox Code Playgroud)
我是一名经验丰富的PHP程序员,他不需要手动发送HTTP post请求.
我希望代码重定向浏览器,这就是我决定使用此方法的原因.
我做得对吗?
还有其他标准的方式,我只是不知道吗?
我希望当用户点击超链接时出现"另存为..."对话框.
我目前正在发送HTTP标头:
application/octet-stream Content-Disposition:inline; filename = something.doc
显然IE用户看到页面呈现内联为乱码ascii.强制"另存为..."对话框在IE上弹出的最佳方法是什么?
我在目录树中有一些文件通过HTTP提供.给定一些子目录A,在该目录树中,我希望能够下载目录A以及所有包含子目录和文件的目录.
Java的某个黑暗角落似乎存在简单/直接/原子解决方案.有谁知道如何做到这一点?
由于子目录中的文件可能链接到非子目录的目录,因此webcrawler无法解决我的问题.
== ==更新
目录和文件必须以静态方式托管.
服务器静态托管目录树中的文件,客户端正在运行Java并尝试使用HTTP复制目录树的某个分支.
VFS就是答案,不幸的是我自己回答了这个问题,所以直到两天后才能选择它作为答案.如果有人写下我的回答,我很乐意将他们的写作标记为答案.
==进一步更新==
sh-3.2# perl -v
This is perl, v5.8.9 built for darwin-2level
...
sh-3.2# perl 2348.pl
Can't locate HTTP/Cookies.pm in @INC (@INC contains: /opt/local/lib/perl5/site_perl/5.8.9/darwin-2level /opt/local/lib/perl5/site_perl/5.8.9 /opt/local/lib/perl5/site_perl /opt/local/lib/perl5/vendor_perl/5.8.9/darwin-2level /opt/local/lib/perl5/vendor_perl/5.8.9 /opt/local/lib/perl5/vendor_perl /opt/local/lib/perl5/5.8.9/darwin-2level /opt/local/lib/perl5/5.8.9 .) at 2348.pl line 24.
BEGIN failed--compilation aborted at 2348.pl line 24.
sh-3.2# find / | grep -i "Cookies\.pm"
/System/Library/Perl/Extras/5.10.0/HTTP/Cookies.pm
/System/Library/Perl/Extras/5.8.9/HTTP/Cookies.pm
/usr/local/ActivePerl-5.10/lib/HTTP/Cookies.pm
Run Code Online (Sandbox Code Playgroud)
怎么解决这个问题?我知道我必须编辑@INC但它在哪里?:)