Symfony 来自REST控制台的POST被认为是由服务器获取的

Symfony 来自REST控制台的POST被认为是由服务器获取的,symfony,nginx,Symfony,Nginx,我使用chrome REST API控制台和Postman向我的服务器发送post请求(运行nginx和symfony2) 这是一个非常简单的请求,只是简单地用一个空的主体发布到一个URL。如果此请求通过HTTP请求从另一台服务器运行,它将注册为POST。尝试从api控制台发布在我的nginx访问日志中注册为GET,并返回405方法,这是不允许的 如果我使用curl,我最初会永久移动301,所以我必须使用-L来跟踪重定向。我不确定这是标准符号还是影响请求 我发现curl请求存在一些问题,但不确定

我使用chrome REST API控制台和Postman向我的服务器发送post请求(运行nginx和symfony2)

这是一个非常简单的请求,只是简单地用一个空的主体发布到一个URL。如果此请求通过HTTP请求从另一台服务器运行,它将注册为POST。尝试从api控制台发布在我的nginx访问日志中注册为GET,并返回405方法,这是不允许的

如果我使用curl,我最初会永久移动301,所以我必须使用-L来跟踪重定向。我不确定这是标准符号还是影响请求

我发现curl请求存在一些问题,但不确定如何解决它们

$ curl -v -L -d "1EepG1a63X" xxx.io/api/convert_mov/
*   Trying xx.76.9.82...
* Connected to xxx.io (xx.76.9.82) port 80 (#0)
> POST /api/convert_mov/ HTTP/1.1
> Host: xxx.io
> User-Agent: curl/7.43.0
> Accept: */*
> Content-Length: 10
> Content-Type: application/x-www-form-urlencoded
>
* upload completely sent off: 10 out of 10 bytes
< HTTP/1.1 301 Moved Permanently
< Server: nginx/1.6.2
< Date: Tue, 15 Sep 2015 09:00:43 GMT
< Content-Type: text/html
< Content-Length: 184
< Connection: keep-alive
< Location: https://xxx.io/api/convert_mov/
<
* Ignoring the response-body
* Connection #0 to host xxx.io left intact
* Issue another request to this URL: 'https://xxx.io/api/convert_mov/'
* Switch from POST to GET
* Found bundle for host xxx.io: 0x7fcad9c14e70
*   Trying xx.76.9.82...
* Connected to xxx.io (xx.76.9.82) port 443 (#1)
* TLS 1.2 connection using TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384
* Server certificate: xxx.io
* Server certificate: DigiCert SHA2 Secure Server CA
* Server certificate: DigiCert Global Root CA
> GET /api/convert_mov/ HTTP/1.1
> Host: xxx.io
> User-Agent: curl/7.43.0
> Accept: */*
>
< HTTP/1.1 404 Not Found
< Server: nginx/1.6.2
< Content-Type: text/html; charset=UTF-8
< Transfer-Encoding: chunked
< Connection: keep-alive
< X-Powered-By: PHP/5.5.25
< Cache-Control: no-cache
< Date: Tue, 15 Sep 2015 09:00:43 GMT
$curl-v-L-d“1EepG1a63X”xxx.io/api/convert\u mov/
*正在尝试xx.76.9.82。。。
*连接到xxx.io(xx.76.9.82)端口80(#0)
>POST/api/convert\u mov/HTTP/1.1
>主持人:xxx.io
>用户代理:curl/7.43.0
>接受:*/*
>内容长度:10
>内容类型:application/x-www-form-urlencoded
>
*上传完全发送:10个字节中的10个
GET/api/convert\u mov/HTTP/1.1
>主持人:xxx.io
>用户代理:curl/7.43.0
>接受:*/*
>
未找到
看起来这可以用修复,但对控制台没有帮助

curl -L -XPOST http://example.com/some-form-handler
诀窍在于-X参数告诉curl始终使用 指定的HTTP方法。要让curl从POST切换到get,您需要 需要使curl隐式地执行POST,例如使用-d标志

因此,我的最后一个请求使用-L跟踪重定向,-d获取数据,-XPOST强制POST通过重定向:

curl -L -d "1EepG1a63X" -XPOST xxx.io/api/convert_mov

如果仔细观察,您将看到您的请求是使用HTTP的。然后,服务器将重定向到HTTPS站点。301重定向不会保留请求方法。您必须针对HTTPS正确发出所有请求。

有趣的是,我认为,至少在协议方面,原始的
方法将被保留。有用的信息…很好发现。那将是一个更容易的解决办法哈哈哈(确实使我们的生活更有趣):D