我正在写一个bash脚本,我试图提交一个post变量,但是wget将它视为多个URL我相信因为它不是URLENCODED ...这是我的基本思想
MESSAGE='I am trying to post this information'
wget -O test.txt http://xxxxxxxxx.com/alert.php --post-data 'key=xxxx&message='$MESSAGE''
Run Code Online (Sandbox Code Playgroud)
我收到错误并且alert.php没有得到post变量加上它很难说
无法解决我无法解决我无法解决尝试..等等.
我上面的例子是一个简单的有点sudo示例,但我相信如果我可以对其进行url编码,它会通过,我甚至尝试过像:
MESSAGE='I am trying to post this information'
MESSAGE=$(php -r 'echo urlencode("'$MESSAGE'");')
Run Code Online (Sandbox Code Playgroud)
但PHP错误..任何想法?如何在没有php执行的情况下传递$ MESSAGE中的变量?
我有两个服务器系统...一个托管应用程序,另一个托管身份验证/授权。当应用程序检测到用户尚未登录时,它将重定向到身份验证服务器,并将用户最初请求的URL作为参数传递,以便在身份验证之后,用户将被重定向回应用程序服务器到最初请求的确切网址。
但是,如果该原始URL包含#,则将执行整个例程。看来浏览器正在解码url编码的参数,因此,将#号之后的所有内容都放到了地板上。我已经在Chrome,Safari和Firefox上尝试过此操作。
例:
原始网址:
https://xxx.com/#/main/by-users?param1=53¶m2=13¶m3=39
Run Code Online (Sandbox Code Playgroud)
重定向网址:
https://yyy.com/signin/?returnURL=https%3A%2F%2Fxxx.com%3A80%2F%23%2Fmain%2Fby-users%3Fparam1%3D53%26param2%3D13%26param3%3D39
Run Code Online (Sandbox Code Playgroud)
浏览器显示:
https://yyy.com/signin/?returnURL=https%3A%2F%2Fxxx.com%2F#/main/by-users?param1=53¶m2=13¶m3=39
Run Code Online (Sandbox Code Playgroud)
如您所见,包括#和之后的所有内容均已解码。因此,服务器永远不会获得完整的“ returnURL”参数值。基本上就是
https://xxx.com/
Run Code Online (Sandbox Code Playgroud)
这一定是某个规范的一部分,尽管似乎应该疯狂地对已编码的#进行解码和处理,就好像它从来没有被编码过一样。但是如何解决这个问题?
谢谢。