Javascript 403编码时禁止+;(%2B)用于PHP GET请求

Javascript 403编码时禁止+;(%2B)用于PHP GET请求,javascript,Javascript,这是一个奇怪的。当我在GET请求中包含一个包含双引号和+符号的字符串时,我似乎得到了一个403禁止错误 变量: var iname = 'Chevalier de Fleur'; var itemdescription = '"Fleur Synchron" + 1 or more non-Tuner monsters Once during each of your turns, when your opponent activates a Spell/Trap Card, you can

这是一个奇怪的。当我在GET请求中包含一个包含双引号和+符号的字符串时,我似乎得到了一个403禁止错误

变量:

var iname = 'Chevalier de Fleur';

var itemdescription = '"Fleur Synchron" + 1 or more non-Tuner monsters
Once during each of your turns, when your opponent activates a Spell/Trap Card, you can negate the activation and destroy that card.';
我正在通过一个如下的请求

jQuery.getJSON('https://example.org/myphpfile.php?itemname=' + iname + '&itemdesc=' + encodeURIComponent(itemdescription) + '&callback=?',
                            function (values) {
这几乎适用于我的9000+项检查,除了这一项。当上面的URL被传入时,我得到一个403禁止的错误

我想我已经把范围缩小到+号上的编码

请求的结果如下所示:

https://example.org/myphpfile.php?name=Chevalier%20de%20Fleur&desc=%22Fleur%20Synchron%22%20%2B%201%20or%20more%20non-Tuner%20monsters%0AOnce%20during%20each%20of%20your%20turns%2C%20when%20your%20opponent%20activates%20a%20SpellTrap%20Card%2C%20you%20can%20negate%20the%20activation%20and%20destroy%20that%20card.
关于这一部分:

&desc=%22Fleur%20Synchron%22%20%2B%20
如果我删除了表示+符号的%2B,那么它就可以正常工作。我认为这可能与双引号后接+有关,但我有更多的项目可以这样做,似乎没有一个项目可以复制这种行为

目前,我已通过“用它替换”来修复它(我真的不需要“+”):

因此,虽然它目前正在工作,但我仍然很好奇,并且非常想了解它为什么不工作,因为我肯定我可能做错了什么

服务器信息:

Apache 2.4.34
PHP 5.6.36

我认为我们需要更多关于您的堆栈的信息:apache、nginx、使用的框架。它们可能会影响请求和响应的行为,并且可能会被配置为响应给定的url。了解这些可能会缩小问题的范围。这不是问题,也不仅仅是PHP。嘿,使用apache 2.4.34。我很高兴因此,在共享主机服务器上,不确定这是否重要。是否有办法让我们将虚拟主机配置添加到问题中?您向我们展示的所有代码都是Javascript,而您仅有的标记是PHP?接收端看起来像什么?我很难看出,除非PHP代码返回40,否则使用%2B会产生任何影响出于某种原因。也给我们看看PHP代码。另外,试着做一些类似于
die('test')的事情
在PHP文件的顶部,检查您是否仍然获得403。我必须询问我的主机是否可以查看它。如果他们允许,我将向他们发送电子邮件并发回详细信息。此外,我不确定将其标记为什么,我猜,因为这是对PHP文件的get请求,我会将其标记为PHP。
itemdescription.replace('+', '' );