|
4 | 4 | from fastapi.exceptions import RequestValidationError |
5 | 5 | from pydantic import ValidationError |
6 | 6 | from starlette.exceptions import HTTPException |
7 | | -from starlette.middleware.cors import CORSMiddleware |
8 | 7 | from uvicorn.protocols.http.h11_impl import STATUS_PHRASES |
9 | 8 |
|
10 | 9 | from backend.common.exception.errors import BaseExceptionMixin |
@@ -193,66 +192,8 @@ async def all_unknown_exception_handler(request: Request, exc: Exception): |
193 | 192 | else: |
194 | 193 | res = response_base.fail(res=CustomResponseCode.HTTP_500) |
195 | 194 | content = res.model_dump() |
196 | | - request.state.__request_all_unknown_exception__ = content |
197 | 195 | content.update(trace_id=get_request_trace_id(request)) |
198 | 196 | return MsgSpecJSONResponse( |
199 | 197 | status_code=StandardResponseCode.HTTP_500, |
200 | 198 | content=content, |
201 | 199 | ) |
202 | | - |
203 | | - if settings.MIDDLEWARE_CORS: |
204 | | - |
205 | | - @app.exception_handler(StandardResponseCode.HTTP_500) |
206 | | - async def cors_custom_code_500_exception_handler(request, exc): |
207 | | - """ |
208 | | - 跨域自定义 500 异常处理 |
209 | | -
|
210 | | - `Related issue <https://github.com/encode/starlette/issues/1175>`_ |
211 | | -
|
212 | | - `Solution <https://github.com/fastapi/fastapi/discussions/7847#discussioncomment-5144709>`_ |
213 | | -
|
214 | | - :param request: FastAPI 请求对象 |
215 | | - :param exc: 自定义异常 |
216 | | - :return: |
217 | | - """ |
218 | | - if isinstance(exc, BaseExceptionMixin): |
219 | | - content = { |
220 | | - 'code': exc.code, |
221 | | - 'msg': exc.msg, |
222 | | - 'data': exc.data, |
223 | | - } |
224 | | - else: |
225 | | - if settings.ENVIRONMENT == 'dev': |
226 | | - content = { |
227 | | - 'code': StandardResponseCode.HTTP_500, |
228 | | - 'msg': str(exc), |
229 | | - 'data': None, |
230 | | - } |
231 | | - else: |
232 | | - res = response_base.fail(res=CustomResponseCode.HTTP_500) |
233 | | - content = res.model_dump() |
234 | | - request.state.__request_cors_500_exception__ = content |
235 | | - content.update(trace_id=get_request_trace_id(request)) |
236 | | - response = MsgSpecJSONResponse( |
237 | | - status_code=exc.code if isinstance(exc, BaseExceptionMixin) else StandardResponseCode.HTTP_500, |
238 | | - content=content, |
239 | | - background=exc.background if isinstance(exc, BaseExceptionMixin) else None, |
240 | | - ) |
241 | | - origin = request.headers.get('origin') |
242 | | - if origin: |
243 | | - cors = CORSMiddleware( |
244 | | - app=app, |
245 | | - allow_origins=settings.CORS_ALLOWED_ORIGINS, |
246 | | - allow_credentials=True, |
247 | | - allow_methods=['*'], |
248 | | - allow_headers=['*'], |
249 | | - expose_headers=settings.CORS_EXPOSE_HEADERS, |
250 | | - ) |
251 | | - response.headers.update(cors.simple_headers) |
252 | | - has_cookie = 'cookie' in request.headers |
253 | | - if cors.allow_all_origins and has_cookie: |
254 | | - response.headers['Access-Control-Allow-Origin'] = origin |
255 | | - elif not cors.allow_all_origins and cors.is_allowed_origin(origin=origin): |
256 | | - response.headers['Access-Control-Allow-Origin'] = origin |
257 | | - response.headers.add_vary_header('Origin') |
258 | | - return response |
0 commit comments