部署到服务器时,React axios请求被CORS策略阻止

时间:2019-06-16 09:28:37

标签: api spring-boot cross-domain

好的,我希望我不会重复,但是我的问题与CORS问题的大部分结果有所不同。

我有springboot rest api后端,我有使用Axios的reactJs前端。 在我的API接口上添加

@CrossOrigin(origins = {"http://localhost:3000", "http://localhost"})
@RequestMapping ...
...

在本地一切正常。 在http://localhost:3000上运行React 在http://localhost:8080/apixxx/orders

上运行的api

所以我将它们部署在我的ubuntu服务器上: 在http://12.123.12.123(端口为80)上运行的React 在http://12.123.12.123:8080上运行的api(邮递员请求成功)

现在,我将@CrossOrigin的原点放在“ http://localhost”上,因为它是针对我的API的已部署副本,因为相对于服务器,它是本地主机。

现在我得到: CORS策略已阻止从来源“ http://localhost:8080/apireq/v1/apiresourcexx”访问“ http://12.123.12.123”处的XMLHttpRequest:请求的资源上没有“ Access-Control-Allow-Origin”标头。

这与删除@CrossOrigin时在本地得到的错误相同。

我尝试添加原点“ http://12.123.12.123”,“ http://12.123.12.123:80”,“ http://myDomainName.com”(我的域名),“ http://myDomainName.com:80”。

没有任何效果。还是一样的错误。

我发现有效的是:

@CrossOrigin(origins = {"*"})

但是我不想那样做。 请帮忙。

----- UPDATE -----

好吧,我现在真的很困惑。 显然,我刚刚意识到我使用的axios路由是axios.post('http://localhost:8080/apixxx/orders',...);基本上,这将指向在我的本地计算机上运行的springboot,而不是在prod服务器上运行。如果是这样,那么我的每个客户端都将是不同的来源,并且所有人都将调用我的API ...如果是这种情况,那么唯一的解决方案是我避免使用:@CrossOrigin(origins =“ * “)

请告知。你们通常在这种情况下做什么?

0 个答案:

没有答案