Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/84.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
javascript ajax post上的Http 406错误。Accept标头设置为Accept all_Javascript_Jquery_Ajax_Apache - Fatal编程技术网

javascript ajax post上的Http 406错误。Accept标头设置为Accept all

javascript ajax post上的Http 406错误。Accept标头设置为Accept all,javascript,jquery,ajax,apache,Javascript,Jquery,Ajax,Apache,当我试图发出一个我无法理解的AJAX请求时,服务器出现了一个错误。这是一个HTTP 406错误。据我所知,这意味着服务器无法以Accept标头指示的格式发送响应。但从我所看到的,我是Accepting*/*(通配符) 您可以在此图像中看到我的HTTP请求的详细信息。 这是我的网页PHP代码: <body> <div id="container"> (snip - menu and header) <div id="notify

当我试图发出一个我无法理解的AJAX请求时,服务器出现了一个错误。这是一个HTTP 406错误。据我所知,这意味着服务器无法以Accept标头指示的格式发送响应。但从我所看到的,我是
Accept
ing
*/*
(通配符)

您可以在此图像中看到我的HTTP请求的详细信息。

这是我的网页PHP代码:

<body>
<div id="container">

             (snip - menu and header)

    <div id="notify-saved">
        <div class="width">
            <span>Saved!</span>
        </div>
    </div>
    <div id="confirm-delete">
        <div id="confirm-delete-content" class="width">
        </div>
    </div>
    <div id="nav-separator">
    </div>
    <div id="body" class="width">

        <section id="content">
            <br />
    <form method="POST" id='template-form' action="post-actions.php" >
        <input type='hidden' name='id' value="15" />
        <input type='text' name='name' value="default-scripting" placeholder='Name' />
            <br />
            <br />
        <input type='checkbox' name='major' id="majorminor" />
        <textarea name='value' style="width:100%;">&lt;script src=&quot;http://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js&quot;&gt;&lt;/script&gt;</textarea>
            <br />
            <br />

        <button name='action' value="Update Template" id='update-button' >Update</button>



    </form>
            </section>
        </div>
    </div>
</body>

另一个相关的事实是,这种错误只在某些时候发生,例如,如果提交了模板值

scriptsrc=”http://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js“/script


然后会有一个错误,但是如果前面的
告诉您您有一个406,并且这是基于
的存在,我也有同样的问题,我将告诉您我是如何调试和修复它的

在我的例子中,我可以通过编写一些非常特定的内联css指令(在html标记的样式属性中)来复制禁止的响应

我分析了apache的错误日志文件(在我的例子中,它位于
/usr/local/apache/logs/error\u log
),并仅根据我得到的响应代码进行过滤

grep 406 error_log
解释说这是ModSecurity的一条规则,它是这么说的:

[Mon Jan 02 13:21:10.394376 2017] [:error] [pid 12827:tid 139784907347712] [client 255.255.255.255] ModSecurity: Access denied with code 406 (phase 2). Pattern match "(?: (?:height|width) ?(?:=|\\\\:) ?[0-9] ?px|overflow ?: ?(?:auto|hidden)|style ?= ?\\"? ?display ?: ?none ?)" at ARGS:body. [file "/usr/local/apache/conf/modsec2/30_asl_antispam.conf"] [line "174"] [id "300076"] [rev "29"] [msg "Atomicorp.com WAF AntiSpam Rules: Hidden Text Detected"] [data " height:8px"] [severity "CRITICAL"] [hostname "my.website.mx"] [uri "/index.php"] [unique_id "WGqoJqwQ25oAADIbgkcAAAGP"]
我研究了如何禁用此功能,结果发现您可以将其添加到conf文件中:

<Location "/">
    SecRuleRemoveById 300076
</Location>

SecRuleRemoveById 300076

这个问题为我解决了。注意,如果你想禁用多个规则,你可以用空格分隔ID。

你的
php
回音是什么?php脚本保存为UTF-8。但是php信息有默认值\u charset no value no value no,它必须是不同的。就像你回音JSON或其他东西一样?…应该有一个空白的res从服务器发送ponse(除非有错误)到该点,it有时会正常工作,并发送空(成功)响应,有时则不会,具体取决于isI尝试完全禁用mod_安全性的表单值(使用.htaccess)然而,实现Base64编码确实解决了我的问题。我不确定是否考虑它是一个修复或工作,但现在它工作。谢谢!我将奖励你在未来几天的奖金,如果没有更好的解决方案出现。编辑。哈哈。我刚刚去投票给你,但没有足够的代表离开后赏金做S。o、 )太好了answer@CarCzar,200确实是一笔巨大的投资。特别是因为这些第一步涉及到大量的行动拨款。我希望你能很快恢复这些声誉。@regilero没问题。我很高兴能整理好这些:)
SecFilter "<( |\n)*script"
grep 406 error_log
[Mon Jan 02 13:21:10.394376 2017] [:error] [pid 12827:tid 139784907347712] [client 255.255.255.255] ModSecurity: Access denied with code 406 (phase 2). Pattern match "(?: (?:height|width) ?(?:=|\\\\:) ?[0-9] ?px|overflow ?: ?(?:auto|hidden)|style ?= ?\\"? ?display ?: ?none ?)" at ARGS:body. [file "/usr/local/apache/conf/modsec2/30_asl_antispam.conf"] [line "174"] [id "300076"] [rev "29"] [msg "Atomicorp.com WAF AntiSpam Rules: Hidden Text Detected"] [data " height:8px"] [severity "CRITICAL"] [hostname "my.website.mx"] [uri "/index.php"] [unique_id "WGqoJqwQ25oAADIbgkcAAAGP"]
<Location "/">
    SecRuleRemoveById 300076
</Location>