当前位置:   article > 正文

前端页面通过apisix网关访问后端的Fastapi的跨域问题CORS_apisix 跨域

apisix 跨域

问题出现:

在使用Vue3和Fastapi做前后端分离项目时,前端页面调用apisix网关再路由到后台fastapi的restfull接口 console报错:
Access to XMLHttpRequest at 'http://192.168.110.45:9080/retrieval_test_data_1030' from origin 'http://192.168.140.2:5100' has been blocked by CORS policy: Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present  on the requested resource.​​​​​​

解决方法:

1)apisix的路由HTTP的方法需要添加支持OPTION选项

2)FastApi后台的服务需要添加CORSMiddleware

  1. app = FastAPI()
  2. #设置允许跨域
  3. origins = [
  4. "http://192.168.110.45",
  5. "http://192.168.140.2",
  6. "http://192.168.110.45:9080",
  7. "http://192.168.140.2:5100",
  8. "http://192.168.110.45:5100",
  9. ]
  10. # 后台api允许跨域
  11. app.add_middleware(
  12. CORSMiddleware,
  13. allow_origins=origins , #这里可以填写["*"],表示允许任意ip
  14. allow_credentials=True,
  15. allow_methods=["*"],
  16. allow_headers=["*"],
  17. )
  18. @app.get('/')
  19. async def index(request: Request):
  20. return templates.TemplateResponse("index.html", {"request": request})
  21. if __name__ == '__main__':
  22. import uvicorn
  23. uvicorn.run(app="gui:app", port=5100, host="0.0.0.0", workers=3)

3)再次访问后正常。

更多解析请参考:https://www.cnblogs.com/AlvinLiang/p/15910902.html

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/秋刀鱼在做梦/article/detail/995126
推荐阅读
相关标签
  

闽ICP备14008679号