【问题标题】:406 response with a $.post request jQuery to external PHP带有 $.post 请求 jQuery 到外部 PHP 的 406 响应
【发布时间】:2015-07-26 19:44:32
【问题描述】:

我正在尝试通过 jQuery 中的 $.post 发布大量文本并获得 406 响应。它在大约 300 个字符下运行良好。以下是我的代码:

index.php

html

<form class="formss" action="index.php">
    <textarea id="submittts" name="tts" spellcheck="false"></textarea>
</form>

jQuery

$('.save').click(function() {
    $.post('store.php', $('.formss').serialize())
});

store.php

<?php
$tts = $_POST['tts'];
$texttostore = $tts;

$servername = "localhost";
$username = "xxx";
$password = "xxx";
$dbname = "notes";

// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
} 

$sql = "INSERT INTO notes (code)
VALUES ('$texttostore')";

if ($conn->query($sql) === TRUE) {
    echo stripslashes(str_replace('\r\n',PHP_EOL,$texttostore));
} else {
    echo "Error: " . $sql . "<br>" . $conn->error;
}

$conn->close();
?>

.htaccess

<IfModule mod_security.c>
SecFilterCheckURLEncoding Off
</IfModule>

得到以下响应: http://i.stack.imgur.com/MUZpX.png

也尝试过使用本地表单提交,但它也会带来错误的请求。

注意:存储时会保留所有空格和格式,这是有意的

如果有人可以帮助我,那就太好了,谢谢:)

【问题讨论】:

  • 这就是为什么我想弄清楚为什么我会收到错误。同样提出了一个ajax请求
  • 406 响应意味着您的响应中的content-type 是浏览器不接受的。查看您的 Ajax 调用的 Accept 请求标头,并查看 content-type 响应标头是否与您的请求中的值之一匹配
  • @arkantos 我看到发送的内容长度超过了我猜的“接受”?这是截图i.imgur.com/SSczVGa.png
  • @vinayakj,再试一次,没用。
  • @vinayakj.. 406 更多的是关于一些不可接受的无效响应类型,它正在发出请求。我认为直接使用 $.ajax 不会有任何区别,因为 $.post 内部使用 $.ajax

标签: javascript php jquery .htaccess http-status-code-406


【解决方案1】:

Web 浏览器向服务器发出信息请求。发生这种情况时,它会发送一个Accept 标头。这告诉服务器浏览器可以接受哪些格式的数据。如果服务器无法以Accept 标头中请求的格式发送数据,则服务器发送406 Not Acceptable error

从 cmets 中附带的屏幕截图中,您可以清楚地看到响应标头中的 charsetiso-8859-1。只需以UTF-8 编码发送响应即可解决问题。

查看此SO 链接以在 PHP 响应中设置字符集标头。

【讨论】:

  • 非常感谢。我尝试将header('Content-Type: charset=utf-8'); 设置为 index.php 和 store.php 但是我仍然得到一个 406 :/ 响应标头仍然出现为Content-Type:text/html; charset=iso-8859-1
  • 您是否在响应标头中验证了相同的内容?就像你之前在开发工具中所做的那样
  • 是的,但是当我发送小块文本时,响应头实际上是:Content-Type:charset=utf-8
  • 嗯,除非我仔细查看您的代码,否则我不会有太大帮助。不幸的是,您甚至没有足够的代表在聊天中讨论这个问题
  • 因为它是一个小项目,所以我把它上传到了 pastebin:pastebin.com/5R0wKteUpastebin.com/4Ncq8P1g 网站是notes.hkbot.io 如果你想看看,那就太棒了,谢谢:)
猜你喜欢
  • 2021-03-02
  • 2016-06-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-25
  • 1970-01-01
  • 2011-04-28
  • 2013-04-08
相关资源
最近更新 更多