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

在请求http.get[duplicate]时发送的Angular2选项方法

齐文栋
2023-03-14

我正在尝试添加基本身份验证到我的angular2应用程序。

public login() {
    // Set basic auth headers
    this.defaultHeaders.set('Authorization', 'Basic ' + btoa(this.username + ':' + this.password));

    console.log('username', this.username)
    console.log('password', this.password)
    console.log(this.defaultHeaders)

    // rest is copy paste from monbanquetapiservice
    const path = this.basePath + '/api/v1/development/order';        

    let req = this.http.get(path, { headers: this.defaultHeaders });
    req.subscribe(
        _ => { },
        err => this.onError(err)
    );
}
OPTIONS /api/v1/development/order HTTP/1.1
Host: localhost:8080
Connection: keep-alive
Access-Control-Request-Method: GET
Origin: http://localhost:3000
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.110 Safari/537.36
Access-Control-Request-Headers: authorization, content-type
Accept: */*
Referer: http://localhost:3000/
Accept-Encoding: gzip, deflate, sdch
Accept-Language: en-GB,en-US;q=0.8,en;q=0.6,fr;q=0.4

为什么Angular2的http首先发送选项?

多谢了。

共有1个答案

曹钊
2023-03-14

这就是CORS的工作方式(当使用跨域请求时)。对于CORS,远程Web应用程序(这里是域为mydomain.org的应用程序)选择是否可以通过一组特定的头来为请求提供服务。

CORS规范区分了两种不同的用例:

  • 简单请求。如果我们使用HTTP GET、HEAD和POST方法,这个用例就适用。对于POST方法,只支持具有以下值的内容类型:text/plain、application/x-www-form-urlencoded和multipart/form-data。
  • 预取请求。当“Simple Requests”用例不适用时,会发出第一个请求(使用HTTP OPTIONS方法),以检查在跨域请求上下文中可以执行的操作。

有关更多细节,您可以查看本文:

  • http://restlet.com/blog/2015/12/15/commanding-and-using-cors/
 类似资料:
  • 我目前对tslint有意见,希望有人能给我指出正确的方向。 我正在尝试使用Angular2框架提供的HTTP发送HTTP GET请求。对于这个请求,我必须指定内容类型和承载身份验证令牌。 我的代码示例: 然而,tslint抱怨说 “TS2345:类型为{headers:headers;}的参数”不可分配给“RequestOptionsArgs”类型的参数。属性“headers”的类型不兼容。类型“

  • 本文向大家介绍angularJS 发起$http.post和$http.get请求的实现方法,包括了angularJS 发起$http.post和$http.get请求的实现方法的使用技巧和注意事项,需要的朋友参考一下 AngularJS发起$http.post请求 代码如下: 这时候你会发现收不到返回的数据,结果为null,这是因为要转换成form data。 解决方案: 配置$httpProv

  • 我想向soap请求发送XML,我使用python请求,如下所示: 当我发送请求时,我会发出以下请求: 我在这样的请求中进行: 我给出了一些错误,比如你不能发送这样的请求。 我意识到我必须发送带有此请求的证书才能获得成功响应 我有<代码>。cer和。crt文件发送,但我这样发送: 并得到以下错误: 更新: 我在PK中使用openssl x509-inform der。cer-输出PK。pem并尝试以

  • 在Android设备上使用“三星互联网”浏览器时,它无法执行Ajax(某些工作)请求。经过一些调试后,我看到浏览器只发送选项请求(成功),但随后不发送相应的post请求。 您可以访问我的Dev站点,在确认提示中选择确定,点击登录并尝试使用随机数据登录 https://dev.gameplaylan.de

  • 如何在angular2的路由中定义可选参数。我的路由配置如下: 所以问题是,每当我使用第一种方法时,参数<code>blablabla</code>都可以正常工作,因为在路由时,我定义了参数<code>xyz</code>但是在第二种方法的情况下,我不想发送参数,所以URL变为 这是第一次很好,但刷新页面后,没有显示整个窗口是空白的,没有内容。那么有没有办法在angular2中路由时提供可选参数。

  • 我在烧瓶中设置了一个非常简单的帖子路线,如下所示: 这是我试图从命令行发送的curl请求: 但是,它仍然打印出“收到的数据:“无”。所以,它不识别我传递的JSON。 在这种情况下是否需要指定json格式?