我在Google Cloud的计算引擎实例上使用静态外部IP地址,该服务器在服务器上运行节点应用程序,在客户端上提供角度2应用程序。
当我直接使用我的应用程序使用GCP-ip(仅通过它的IP和端口直接访问网站)时,它可以正常工作,但是当我尝试通过DNS。 (典型的A - 记录和CNAME记录)到计算引擎实例ip,因为我的应用程序试图与服务器通信我收到此CORS错误:
" XMLHttpRequest无法加载[my-gcp-ip] / login。从' [my-gcp-ip / login]'重定向到[my-gcp-ip] /'已被CORS政策阻止:请求需要预检,不允许遵循跨源重定向。"
我正在使用Google Cloud DNS,并且我的域名注册商的域名服务器已正确设置为使用Google的域名服务器。
我基本上也遵循了我发现的每个例子来允许CORS OPTIONS,设置请求标头,允许请求方法和允许请求来源,请求凭据,max-age-headers等等。建议使用不同的配置,而我发现的任何配置都不适用于我:
一些有用的链接:虽然它们对我不起作用:
How to enable cross-origin resource sharing (CORS) in the express.js framework on node.js
cors-and-access-control-allow-methods-in-express-js
How to disable OPTIONS request?
我正在使用" Content-Type" :" Application / JSON"以及我在整个应用程序中的请求以及我所理解的内容只要请求不仅仅是一个简单的请求,浏览器就会处理Preflight。
有人建议使用简单的内容类型,例如" Text / Plain"或" www-form-urlencoded"无论何时提出发布请求,都不一定会触发预检。但是,我无法在我的应用程序代码中更改此内容。
澄清:我之前遇到过另一个CORS错误: " No' Access-Control-Allow-Origin'标头出现在请求的资源上。"
但是这个问题似乎已经在上述链接的帮助下解决了。这里的问题是重定向,它给了我错误。 (另外:大部分内容都解决了这个问题,一般允许使用CORS,但我发现很难找到彻底解决这个预检问题的帖子。)
我该怎么办?
我能做些什么来解决这个预检?
当我使用Google的DNS和所有代码时,我的域名如何被视为交叉来源:服务器和客户端代码都驻留在同一计算引擎实例上?
我可以在Google Cloud上做些什么来避免在不改变我的应用结构的情况下使用CORS。我一般不需要使用CORS。这是我刚才使用我的域而不是仅通过它访问我的实例时发现的事情。
感谢您的时间,非常感谢任何帮助,每当我找到更多可以使用的内容时,我会尝试更新此帖子。