在nginx discourse.conf中添加访问控制允许来源

时间:2014-01-31 15:59:51

标签: ajax nginx cors discourse

所以我在forums.awake-gaming.com上有一个应用程序,并在awake-gaming.com上有一个页面,POST通过ajax将forums.awake-gaming.com表单发送到XMLHttpRequest cannot load http://forums.awake-gaming.com/posts. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://awake-gaming.com' is therefore not allowed access.

如预期我得到

discourse.conf

因此,由于我可以访问服务器,因此我将其添加到nginx/conf.d目录下的add_header Access-Control-Allow-Origin "http://awake-gaming.com/join-us.html"; add_header Access-Control-Allow-Methods: "GET, PUT, POST, DELETE, OPTIONS"; add_header Access-Control-Allow-Headers: "Content-Type, Authorization, X-Requested-With"; 文件中。

forums.awake-gaming.com

我重新启动了nginx,并尝试再次提交表单,在理论上,这应该可以工作,但我仍然在控制台中得到相同的错误:

并且ajax调用也没有返回成功。但奇怪的是,数据被发布到.conf并且发布(通过话语api)。

我出错了吗?我试图在meta.discourse.org上询问,但他们说这是nginx的一些问题而不是话语。在{{1}}文件中添加标题是否足够?或者我也需要用rails做一些事情?

1 个答案:

答案 0 :(得分:2)

我认为您需要为http://awake-gaming.com值指定“http://awake-gaming.com/join-us.html”,而不是“Access-Control-Allow-Origin”,如错误消息所示。实际上,如果您使用Chrome,它会告诉“仅限'访问控制 - 允许 - 来源'白名单”http://awake-gaming.com/join-us.html'。原点“http://awake-gaming.com”不在列表中,并且因此不允许访问。“

另一方面,在Access-Control-Allow-MethodsAccess-Control-Allow-Headers之后还有额外的冒号,你最好将它们删除,但我不认为它们是罪魁祸首。