来自Terminal和Shellscript的卷曲电话是不同的?

时间:2017-09-18 11:46:00

标签: shell curl nginx terminal

我从终端调用一次curl命令,从Shellscript调用一次 - 但结果不同:

#!/usr/bin/env bash

url="dev.test.ch"
http="http://"
test="192.168.178.107"

curl -H "'Host: $url'" "$http$test"
echo "'Host: $url'" "$http$test"

curl -H 'Host: dev.test.ch' http://192.168.178.107

一旦我获得NGINX Startpage(来自Shellscript)和一次正确的回复(来自我的应用程序的HTML页面)

有什么想法吗?

2 个答案:

答案 0 :(得分:0)

愚蠢的我 -

curl -H 'Host: '$newline "$http$test"

支撑是问题。

答案 1 :(得分:0)

您可以将curl-v选项一起使用,以查看将HTTP请求发送到服务器的确切内容。问题是,在您的脚本中curl添加了'Host标题。

使用此行curl -H "'Host: $url'" "$http$test"发送

> GET http://192.168.178.107/ HTTP/1.1
> Host: 192.168.178.107
> User-Agent: curl/7.49.1
> Accept: */*
> 'Host: dev.test.ch'

如果您删除单个qoutes curl -v -H "Host: $url" "$http$test",它将发送正确的请求:

> GET http://192.168.178.107/ HTTP/1.1
> Host: dev.test.ch
> User-Agent: curl/7.49.1
> Accept: */*