当前位置: 首页 > 知识库问答 >
问题:

angular未在请求标头上发送正确的标头

西门凯康
2023-03-14

我是一个使用angular的新手,我正在努力学习一点,但我不能使用令牌进行简单的获取。我做了很多研究,最后总是得到这段代码

对于我的后端,我使用Kotlin/Springboot并配置了Cors。

即使如此,当尝试这样做请求我得到这个错误。

export class AccountService {

  endpoint = 'http://localhost:5000/api-v1/account/list'

  constructor(private http: HttpClient) { }

  list() {
    const token = sessionStorage.getItem('token') // I'm getting the token correctly

    const headers = {
      'Content-Type': 'application/json',
      'Accept': 'application/json',
      'Access-Control-Allow-Headers': '*',
      'Authorization': token,
    }

    return this.http.get<any[]>(this.endpoint, { headers: headers })   } }

访问位于“”的XMLHttpRequesthttp://localhost:5000/api-v1/来源的帐户/列表

--

果心js:15713错误HttpErrorResponse{headers:HttpHeaders,状态:0,状态文本:“未知错误”,url:

服务器端的Cors配置

class CorsFilter : Filter {
    override fun init(p0: FilterConfig?) { TODO("not implemented") }

    override fun destroy() { TODO("not implemented") }

    override fun doFilter(servletRequest: ServletRequest, servletResponse: ServletResponse, filterChain: FilterChain) {
        val response = servletResponse as HttpServletResponse
        val request = servletRequest as HttpServletRequest

        response.setHeader("Access-Control-Allow-Origin", "http://localhost:4200")
        response.setHeader("Access-Control-Allow-Methods", "GET,POST,DELETE,PUT,OPTIONS")
        response.setHeader("Access-Control-Allow-Headers", "Content-Type")
        response.setHeader("Access-Control-Allow-Credentials", true.toString())

        if ("OPTIONS".equals(request.method, ignoreCase = true)) {
            response.status = HttpServletResponse.SC_OK
        } else {
            filterChain.doFilter(servletRequest, servletResponse)
        }
    }
}

我真的不知道在Angular中我们是否应该添加其他东西。

  • 角度CLI:7.3。1

共有1个答案

许远航
2023-03-14

在服务器端代码中,您可以更改这一行吗

   response.setHeader("Access-Control-Allow-Origin", "http://localhost:4200")

    response.setHeader("Access-Control-Allow-Origin", "*")

这应该行得通。

 类似资料:
  • 下面是我的视频示例代码Vimeo的视图 代替发送,我想发送以下标头 用户代理:Mozilla/5.0(Windows NT 6.1;WOW64)AppleWebKit/537.36(KHTML,比如Gecko)Chrome/46.0.2490.80 Safari/537.36。 那要怎么做?

  • 我制作了一个简单的JavaScript页面,当按下“发送”按钮时,该页面应该显示时间表并通过HTTP发送数据。 数据应该发送到一个Arduino使用这个简单的方案: http://arduinoip/DATASTARTSHEREhh:mm;hh:mm;hh:mm;[...];DATAENDSHERE 我使用以下代码打印我在Arduino串行监视器中收到的所有数据: 我收到的数据如下: 新客户 CM

  • 我想使用jwt令牌向我的应用程序添加身份验证。 每次向服务器发送请求时,我都会附加服务器创建的令牌。 我受伤了,这是在标头中发送令牌的安全方式吗?如果有人访问我的计算机并在 DevTools 选项卡中检查我的网络并看到我的令牌,他可以使用令牌模拟请求并控制用户数据。 这是常见的情况吗?以及窃取和黑客 JWT 代币的方法?

  • 我刚刚注意到,在以前的HTTP请求选项中可能使用的Header Object在新的Interceptor中不再支持。 这是新的拦截器逻辑: 现在,我有两种方法可以在这个请求中添加标题: 例子: 如何在此请求上有条件地添加多个标头?与我以前处理Header对象的方法相同:

  • 有没有人知道如何发送,如果修改后,因为标题与网址请求? 我正在尝试获取状态代码,它会告诉我RSS页面是否已更新。 更新#1:我能够进行以下测试: 但奇怪的是,如果我删除整个iOS应用程序并运行它,我会得到304状态代码。但是,如果我注释掉添加if Modified Since值的行并重新运行它,那么我得到的是200,但是当我取消注释该行并重新执行它时,304错误不会返回……它是一个200错误代码。

  • 我正在使用get方法发送头中的4个数据(id、令牌、角色、EMPCODE), 我犯了一个错误 错误HttpErrorResponse 我的令牌是正确的,它是我在邮递员处签入的,我收到状态为200的回复,但我在我的项目中面临这个问题 我正在共享我的服务文件代码 我从组件共享代码,我已经订阅了获得响应。 当我在浏览器的网络标头中检查时,我可以检查我正在传递的请求标头没有传递到那里。