我正在使用快速API服务器并公开了api。并且从我使用axios
的JS中,我正在调用这个服务器。
我正在使用拦截器检查标头
中的令牌
。
我还添加了CORSMiddleware
这是代码
origins = ["*", "http://localhost:3002"]
# Creating FastAPI Application
app = FastAPI()
app.include_router(chat_service.router)
app.add_middleware(
CORSMiddleware,
allow_origins=origins,
allow_credentials=True,
allow_methods=["*"],
allow_headers=["*"]
)
还有拦截器
@app.middleware("http")
async def verifyJWT(request: Request, call_next):
try:
token = request.headers['token']
...
except:
return JSONResponse(content={
"err": "You are not authorized"
}, status_code=401)
下面是JS中使用axios
的代码
$.ajax({
url: url,
type: "POST",
crossDomain: true,
contentType: "application/json",
headers: {
"accept": "*/*",
"Access-Control-Allow-Origin": "*",
"Content-Type": "application/json" ,
"token": TOKEN
},
data: my_data,
success: function (botResponse, status) {
...
},
error: function (xhr, textStatus, errorThrown) {
.. .
}
});
我在< code >头中传递< code >令牌
但在快速 api 服务器上,它会抛出错误,因为标头中没有令牌
在控制台上显示
Access to XMLHttpRequest at 'http://localhost:8082/api/process' from origin 'http://localhost:3002' 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.
如果我从ThunderClient
进行呼叫,它会起作用。
可能是什么问题,我该如何解决这个问题?
问题出在您的来源 = [“*”, “http://localhost:3002”]。
据我了解,当您在中间件中设置 allow_credentials=True
时,您不能使用通配符(即“*”)
进行allow_origins
。这是文档的摘录。
allow_credentials
-指示跨域请求应支持cookie。默认为False。此外,allow_origins
不能设置为 ['*'] 才能允许凭据,必须指定来源。
链接到文件在这里:https://fastapi.tiangolo.com/tutorial/cors/
配置拦截器 declarations: [ AppComponent ], HttpClientModule ], providers: [ [ { provide: HTTP_INTERCEPTORS, useClass: AuthInterceptor, multi: true } ] bootstrap:
一、拦截请求 mitmproxy的强大功能是拦截请求。拦截的请求将暂停,以便用户可以在将请求发送到服务器之前修改(或丢弃)该请求。mitmproxy的set intercept命令配置拦截。i默认情况下,该命令绑定到快捷方式。 通常不希望拦截所有请求,因为它会不断中断您的浏览。因此,mitmproxy希望将流过滤器表达式作为set intercept选择性拦截请求的第一个参数。在下面的教程中,我们
我在我的项目中使用。所有POST数据都以格式发送,并在服务器端解编入各自的bean中。类似于这样: 向服务器发送请求: 我从这里得到了REST拦截器的实现。 我想访问拦截器中的有效载荷(请求体)。由于数据是JSON格式的,因此不能作为请求参数访问。是否有一种方法可以在拦截器方法中获得请求正文?请指教。
关于这个SO问题,使用Spring Security SAML向SAML请求添加请求参数 这是我的编码器,我正试图传递到重定向绑定 我还尝试了由此提出的解决方案,因此响应Spring Boot添加Http请求拦截器类似的结果,我的HandlerInterceptor bean已经注册,但没有被拦截。我觉得我漏掉了一个小细节。如有任何帮助,我们将不胜感激。
Spring的处理器映射机制包含了处理器拦截器。拦截器在你需要为特定类型的请求应用一些功能时可能很有用,比如,检查用户身份等。 处理器映射处理过程配置的拦截器,必须实现 org.springframework.web.servlet包下的 HandlerInterceptor接口。这个接口定义了三个方法: preHandle(..),它在处理器实际执行 之前 会被执行; postHandle(..
我已经使用spring编写了一个拦截器,它以preHandle方法从HTTPServletRequest读取请求正文。请求正文包含json。我还能够读取请求正文,但请求对象发生了一些事情,请求正文变得空白。正因为如此,这个请求正成为一个糟糕的请求。任何帮助都将不胜感激。提前谢谢。