Meteor Restivus:在预检响应中,Access-Control-Allow-Methods不允许使用方法PUT

时间:2015-12-07 11:08:28

标签: javascript mongodb rest meteor

我尝试使用流星中restivus生成的端点PUT来更新记录(mongo DB)。它正在使用本地主机'地址。而不是' localhost'使用ip地址返回了以下错误。

XMLHttpRequest cannot load http://192.168.2.44:3000/api/v1/posts/HBw6uWkzScivNj9Er. Method PUT is not allowed by Access-Control-Allow-Methods in preflight response.

我阅读了他们的文件,但无法找到解决方案。如果有人遇到类似情况并解决了问题,请分享您的解决方案。

提前致谢。

1 个答案:

答案 0 :(得分:2)

您会注意到,当您的浏览器地址栏显示localhost网址时,localhost请求有效。但是,如果您的浏览器地址栏显示192.168.2.44(假设它是您的计算机),则localhost网址将停止工作,并且IP地址网址将起作用。浏览器不允许对其他域名发出XMLHttpRequestajax请求。在这种情况下,您的IP地址和localhost是不同的域,即使它们指向同一台计算机。由于Cross Origin请求策略,浏览器仍然不允许它。

无论何时提出ajax请求,最好不要提及域名。这将默认浏览器在加载的同一域上发出请求。只需将您的网址替换为/api/v1/posts/HBw6uWkzScivNj9Er,您就会确保它始终有效。

我建议您阅读以下MDN文章,以全面了解Cross Origin政策。

https://developer.mozilla.org/en-US/docs/Web/HTTP/Access_control_CORS