将 URL 作为发布数据传递时,jQuery ajax 返回 404 错误

Posted

技术标签:

【中文标题】将 URL 作为发布数据传递时,jQuery ajax 返回 404 错误【英文标题】:jQuery ajax returning 404 error when passing URL as post data 【发布时间】:2013-11-04 20:04:30 【问题描述】:

我在使用 $.ajax 时遇到 404 错误,并将其缩小到问题是我与数据一起传递的值之一。

我正在尝试将 url 作为文本传递以保存到我的数据库中。

$.ajax(
    type: 'POST',
    url: 'ajax.php',
    data: 'edit-username': username, 'website-value': websiteValue
).done(function()
    //custom code here
);

如果我将 websiteValue 设置为等于 http://google.com,那么我在 chromes 网络选项卡上收到 404 错误。 (对于我自己的域以外的任何东西都是如此。)

如果我将它设置为 //google.com 或只是 google.com 它工作正常。

如果我将它设置为http://mydomain.com 它也很好用。

我无法弄清楚这一点,任何帮助将不胜感激。 ajax 调用是通过 https 完成的,如果这有什么不同的话。

ajax.php 文件对数据执行以下操作。

$mysqli = connect_db();
$query = $mysqli->prepare('UPDATE tbl SET website = ? WHERE username = ?');
$query->bind_param('ss', $website, $username);
$query->execute();
$query->close();
$mysqli->close();

【问题讨论】:

尝试使用“http://localhost/” @N20084753 这也会导致 404 错误。 在网络选项卡上,失败请求的完整 url 是什么? 你检查过apache重写规则吗?你如何发送原始数据?这是 url 编码的吗? 我会设置代理或网络跟踪工具来查看导致 404 的请求。 【参考方案1】:

我认为这是服务器响应。服务器尽量防止跨域攻击。服务器日志中有什么?服务器是什么?

【讨论】:

我在其他页面上测试过,我们的应用防火墙似乎不允许通过 url。我必须与安全部门合作。

以上是关于将 URL 作为发布数据传递时,jQuery ajax 返回 404 错误的主要内容,如果未能解决你的问题,请参考以下文章

使用 jQuery 的 $.ajax() 将多个 Json 对象作为数据传递

如何使用 JQuery 将 HTML 表单字段作为数组直接传递到 CodeIgniter 中的数据库

有没有办法使用 javascript/Jquery 将未提交的输入字段的值属性作为 URL 的参数传递?

将数组作为url参数传递并重定向到新页面

如何将 URL 作为路径变量传递

使用 jQuery.ajax 发布函数将 javascript 数组中的数据传递到服务器?