Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/479.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript JS与API服务器在不同端口上的交互_Javascript_Ajax_Cross Domain Policy - Fatal编程技术网

Javascript JS与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和特殊标志。

我有一个API服务器在开发机器上的端口
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对于这些类型的情况非常有用,前提是您具有对服务器的配置访问权: