jquery - 从浏览器到另一台服务器的 HTTP POST 请求

标签 jquery ajax

我正在努力实现这个http://wiki.kolmisoft.com/index.php/MOR_API_login 。我已启用服务器中的设置以允许 API。 Javascript 的问题是,我的主网站在 website.com 域下运行,而星号服务器在 voip.website.com 下运行。因此,当我尝试使用 jQuery 调用 url 时,我得到 XMLHttpRequest 无法加载 http://voip.website.com/.../.../ .....起源http://sites Access-Control-Allow-Origin 不允许。

我不确定实现此目标的最佳方法是什么。任何要点都会有很大帮助。

最佳答案

所有浏览器都强制执行 same-origin policy其中包括整个主机(website.com 与 voip.website.com)。除非主机相同,否则您无法处理从 Ajax post 返回的 JSON。

有一个名为 JSONP 的解决方法。诀窍在于将回复包装在 JavaScript 函数中。您会看到,同源策略仅适用于数据,而不适用于成熟的脚本本身。因此,如果响应是 JavaScript 而不是数据,浏览器会认为您需要运行此脚本。

例如,假设您的响应将是以下 JSON:

{
  firstName: 'Abed',
  lastName: 'Nadir',
  school: 'Greendale Community College'
}

相反,您可以这样回应:

({
  firstName: 'Abed',
  lastName: 'Nadir',
  school: 'Greendale Community College'
})

需要注意的是,前后的括号使其成为 JavaScript 匿名函数而不是 JSON 数据。您所做的就是接收该响应并删除前后的 JavaScript 代码。

听起来很困惑?确实如此,但每个人都这样做,包括 Flickr、Google、Amazon、Facebook 等等。

关于jquery - 从浏览器到另一台服务器的 HTTP POST 请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10390120/

相关文章:

javascript - JSON 中所需的帮助

javascript - 使用不同的浏览器窗口实现拖放

javascript - 表单成功处理后如何执行操作?

php - 更改通过 JSON 传递的输入文本值

javascript - 如何仅通过拖动 '#box' div 使 '#head' 可拖动,而不是在拖动 '#box' 时使 '#content' 可拖动

jquery - 将 jQuery 插件转换为 WordPress 插件

javascript - 如果列表项有子列表,添加 css 样式

javascript - 邮件附件媒体类型错误 Gmail API

java - Ajax 调用不起作用

javascript - 无法从 AJAX 调用返回坐标到 Google Maps API?