我正在努力实现这个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/