我正在设置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错误的情况下在本地主机上执行开发。