Indesign javascript Socket总是使用host:localhost执行请求

时间:2014-01-06 03:35:15

标签: javascript sockets adobe adobe-indesign

我正在尝试使用Socket连接来读取远程网站上的文件。到目前为止,我的代码:

conn = new Socket;
if( conn.open( 'example.com:80' ) ) {
    conn.write( 'GET /indesign-page/ HTTP/1.0' + "\n\n" );
    reply = conn.read(999999);
    conn.close();
} else {
    alert( 'Problem connecting to server' );
}

套接字连接到example.com很好,但请求是这样的:

GET http://localhost/indesign-page/ HTTP/1.0

应该是这样的:

GET http://example.com/indesign-page/ HTTP/1.0

我已经尝试将conn.write参数更改为'GET http://example.com/indesign-page/ ...',但后来又出现了:

GET http://localhosthttp://example.com/indesign-page/ HTTP/1.0

网络服务器要求正确设置主机才能正常投放。

2 个答案:

答案 0 :(得分:1)

您需要设置“主机”标题。

conn.write( 'GET /indesign-page/ HTTP/1.0' + "Host: example.com\r\n" + "\n\n" );

因为conn.open( 'example.com:80' )表示找到example.com的服务器ip,然后在80端口连接该IP地址,因此Web服务器在连接之前不知道您已经解析了example.com。

答案 1 :(得分:0)

您需要使用手动套接字对象吗?在Adobe's Community Site上有一个提到已创建的FTP Script,您可以在其中调用GET或PUT到FTP服务器上的文件。

否则你使用哪个操作系统?如果你总是在Mac上,你可以使用AppleScript命令并将文件放在任何你想要的地方:

var command = 'do shell script "curl http://localhost/indesign-page"';
var response = app.doScript(command, ScriptLanguage.APPLESCRIPT_LANGUAGE);

AppleScript的优点在于您可以使用AppleScript编辑器(或脚本编辑器,如果您早于10.6)手动执行命令。