React Iframe:使用不同的端口号访问localhost会导致跨源安全错误



我正在设置iframe,并坚持进行本地测试。我的应用程序在localhost:3000 上运行

我在我的应用程序中设置了Iframe,并将src-url设置为localhost:1234以进行本地测试。我希望通过本地主机访问可以解决跨源错误,但由于端口号不同,这似乎不起作用

SecurityError:阻止了一个具有原点的帧";http://localhost:3000"防止访问跨原点帧。

我查看了各种堆栈溢出的帖子,并尝试禁用chrome网络安全,即使这样,我似乎也无法进行一些本地测试。

关于如何防止这种情况下的交叉原点错误,有什么建议吗?

谢谢!

您的应用程序(后端(应该发送一个CORS头(如果我理解正确,则来自localhost:3000(。不同的端口(就像不同的主机名(算作不同的来源,因此相同的来源策略适用于请求,并且必须明确启用跨来源请求。

这样做的方法是你的";后端";必须发送响应标头

Access-Control-Allow-Origin: localhost:1234

如果这是你的前端应用程序运行的地方。对于开发,您也可以发送

Access-Control-Allow-Origin: *

不要在管道的后期阶段执行*,尤其不要在生产阶段,因为您可能会打开应用程序以发现进一步的漏洞(CSRF(。

如果您的前端应用程序使用cookie来验证跨来源,则后端还必须发送Access-Control-Allow-Credentials: true,并且您的前端javascript必须将withCredentials: true添加到请求中。然而,听起来你并不是这样的。

我认为这比禁用跨源限制要好,因为这适用于任何没有任何设置的开发人员,并且不会损害浏览器安全。它使您能够完全控制哪些客户端可以访问您的API,还使您能够更好地理解跨来源请求。

我能够通过Safari按照以下步骤进行本地测试:

Safari->首选项->高级

然后在底部勾选菜单栏中的显示开发菜单

然后在"开发"菜单中勾选"禁用跨来源限制">

在某些现代浏览器上,默认情况下会禁用跨源资源共享。Allow CORS:Chrome的Access Control Allow Origin插件添加了必要的HTTP标头,以便在没有CORS错误的情况下在本地主机上执行开发。

最新更新