Javascript JS与API服务器在不同端口上的交互
我有一个API服务器在开发机器上的端口Javascript JS与API服务器在不同端口上的交互,javascript,ajax,cross-domain-policy,Javascript,Ajax,Cross Domain Policy,我有一个API服务器在开发机器上的端口AAAA上运行,JS前端应用程序(emberjs,使用yeoman)在端口BBBB上运行。在实时服务器上,这些端口将是相同的。不幸的是,在开发机器上,我遇到了跨源策略问题 我能做些什么 PS:目前我通过使用Chrome解决了这个问题 open -a Google\ Chrome --args --disable-web-security 并使用绝对根路径http://localhost:8888/在JS api中。但我并不真正喜欢硬编码的URL和特殊标志。
AAAA
上运行,JS前端应用程序(emberjs,使用yeoman)在端口BBBB
上运行。在实时服务器上,这些端口将是相同的。不幸的是,在开发机器上,我遇到了跨源策略问题
我能做些什么
PS:目前我通过使用Chrome解决了这个问题
open -a Google\ Chrome --args --disable-web-security
并使用绝对根路径
http://localhost:8888/
在JS api中。但我并不真正喜欢硬编码的URL和特殊标志。如果有更好的解决方案,请让我知道 除了将chrome与——禁用web安全性一起使用之外,我还使用了这个代码片段来避免对API源代码进行硬编码
var origin = location.origin.replace(/localhost:(\d+)/, 'localhost:8888');
并且只为本地开发更改它。假设您无法更改开发环境,您可以使用允许您放松(或删除)跨域策略的浏览器进行测试。(Chrome允许通过命令行开关实现这一点。)但我认为最好让开发环境反映生产环境。是的,我使用Chrome实现了这一点,但这种方法很脆弱,因为我必须为端口使用硬编码url。如果您可以将导致404的任何请求转发到另一个端口,那就太好了。通过这种方式,您可以使用相对URL,前提是对api的请求不存在。CORS对于这些类型的情况非常有用,前提是您具有对服务器的配置访问权: