通过AJAX(jQuery)POST一个URL

3
我网站上有一个文本字段,其中包含一个URL,即“http://www.google.com”。
当用户更改该字段时,jQuery通过POST将更改发送到保存到数据库的PHP脚本。
问题在于,当jQuery尝试发送更改字段的值(即“http://www.google.com”)时,会出现“403禁止访问”错误。似乎“http://”是有问题的部分。“ttp://”和“http:/”都能够通过。
浏览器是否出于安全原因返回错误?有什么方法可以避开这个问题吗?
编辑:更改文本字段的事件触发了这个问题:

$.ajax({
method: "POST",
url: "updateproject.php",
data: { "id": id, "field": this.name, "value": this.value }
});

编辑2:这是一个错误的图片。我应该向我的托管提供商询问吗? enter image description here


1
这只是一个字符串,所以应该没问题。你能给我们展示发送请求的代码吗? - Halcyon
1
请给我们提供代码以给出一个合理的答案。 - user2516837
1
在排除嵌入式URI标点符号时,必须正确解析基本URI,否则可能存在安全风险。尝试将URL放在尖括号<>中,并在表单处理程序中删除它们。 - Radio
问题已经开放了43分钟,但仍未提供任何代码?请提供您的代码。 - ʰᵈˑ
Radio,你的解决方案非常好!谢谢!实际上,在URL开头添加任何字符都可以避免403错误 - 字母/数字、点或其他任何字符。除非有更优雅的解决方案,否则在我的情况下似乎这是可行的方法。 - Jeff
2个回答

1

很遗憾,这也没有帮助。感谢您的尝试帮助。 - Jeff

1
服务器返回403 Forbidden,而不是您的浏览器。这意味着您需要进行身份验证(可能发送用户名和密码)才能发布正在发送的数据。
"ttp://" 和 "http:/" 不是有效的URI头。所以它们无法通过。服务器很可能会忽略它们。
我也怀疑google.com会允许您跨站点发布到他们。如果您想在自己的站点上显示他们的搜索结果,您需要查看他们的搜索API。

我认为你误解了问题。我不想做跨站点的东西。我只想通过 AJAX 将 "http://www.google.com" 插入数据库。此外,除了包含 URL 的字段之外,还有其他字段可以正常工作,因此这不是身份验证问题。 - Jeff

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接