首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当POST‘’ed输入值包含单词'selectors‘时,远程服务器Laravel安装不允许我的POST请求数据传递

当POST‘’ed输入值包含单词'selectors‘时,远程服务器Laravel安装不允许我的POST请求数据传递
EN

Stack Overflow用户
提问于 2018-07-15 05:14:21
回答 2查看 648关注 0票数 0

问题标题可能不合适--我甚至不知道到底出了什么问题:我有一个Laravel路由:Route::post("clients/sync/{command}/{uuid}", "SyncController@handle");这个路由在我的本地主机上执行得很好,并且和预期的一样。posted值只是一个名为data的字符串(大约10 is大小)。dump($request->input('data'));dump($request->all());都在本地主机上提供了预期的输出。

但是,在实际部署时,即上传到远程托管时,似乎没有将输入与请求一起传递。dump($request->input('data'));简单地给出了[]

我不知道该怎么办。我尝试过禁用VerifyCsrfToken中间件,尝试将内容类型的头更改为不同的类型,甚至完全禁用了所有中间件,等等.它只是做不到data的输入。

本地和主机服务器运行相同的PHP版本(7.2),并且都在Apache上运行。

请帮帮忙

UPDATE设置content-type:"application/x-www-form-urlencoded"给出了本地主机和远程服务器上的错误(即没有传递输入值)。设置content-type:"multipart/form-data;可以在本地主机上正常工作,但在远程服务器上提供MethodNotAllowedHttpException。现在,在远程服务器上设置Route::any("clients...会导致上述相同的空错误。

基于流行需求的更新2,请在下面找到@handle控制器处理程序(尽管我认为问题不可能来自这里):

代码语言:javascript
复制
public function handle(Request $r, $command, $uuid)
{
    dd($r->all());//I also tried dd($$r->input('data'));

    //but acutally, it does a bunch of stuffs
    //it's just an API endpoint that fecthes a couple of data for the client based on the `data` input variable
    //nothing that I think should cause Symphony's `MethodNotAllowedHttpException` here though
    $c = \App\Client::where('uuid', $uuid)->firstOrFail();
    ...
    return response('ok');
}

邮递员,本地人:

邮递员,远程主机:相同的设置,相同的值,等等.

更新3当我减少了发布在data中的字符串内容的长度时,远程服务器Laravel安装就像预期的那样处理它!

用于远程服务器的更新4 phpinfo():

更新5我想我可能发现了一个bug。也许导致我失眠的错误是在我的网络主机上。详细信息:当data的内容不包含单词选择器时,一切都很好。但是,如果这样做,则不处理输入(即上面描述的“空”错误)。我只会继续把它称为“空错误”(在这里)它似乎是与输入处理有关的事情。似乎输入在某种程度上被过滤了,因为我现在已经确认它不是在输入的大小上,而是在输入的内容上。我用以下方法进行了测试:data = { "attendances": "{\"type\" : \"join\" , \"selectors\" :\"none\"}" }给出了空错误。当我用像selectors这样的随机词替换center时,一切都很好,即使是在非常大的数据集中。它看起来像正则表达式过滤,因为当我用单词selectselection替换时,会出现相同的空错误结果。

作为解决办法,我现在暂时在我的大型celection输入变量中对selecors的所有实例使用单词data

顺便说一下,web主机是namecheap.com。

更新5更改了标题以适当地反映问题。

提醒__:localhost工作正常,只有远程抛出Symfony\Component\HttpKernel\Exception\MethodNotAllowedHttpException__,但返回content-type:"application/x-www-form-urlencoded"的空输入

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-07-15 10:44:10

在确认这是the主机(namecheap.com)服务器问题后,我聊起了他们的支持.因此,我知道他们有一个mod_security设置来标记请求参数。

有人能告诉我,是否有其他主机仅仅因为在这个上下文中有‘选择器’这个词就将http://you-domain.com/api/clients/sync/localData/40uanufU8htzGLga?data="{ "attendances": "{\"type\" : \"join\" , \"selectors\" :\"none\"}" }"标记为恶意的?更糟糕的是,没有任何单一的日志向域名所有者指出这样的情况?

请提出意见和反应。

(至少在我的另一个godaddy帐户上没有发生这种情况。@Polaris在下面的答复中还建议为Laravel托管数字海洋主机)

票数 0
EN

Stack Overflow用户

发布于 2018-07-15 07:23:07

对于远程服务器,请将web.php中的路由更改为:

代码语言:javascript
复制
Route::post("/api/clients/sync/{command}/{uuid}", "SyncController@handle");

并在/app/Http/中间件/VerifyCsrfToken.php中确保有以下代码

代码语言:javascript
复制
protected $except = [
    '/api/clients/sync/{command}/{uuid}'
];

将邮递员中的“内容-类型”设置为:

代码语言:javascript
复制
application/json

试一试,并报告任何成功或错误。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51345470

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档