gpt4 book ai didi

angularjs - 在 Angular 2 中发出 http POST 请求

转载 作者:太空狗 更新时间:2023-10-29 19:35:48 25 4
gpt4 key购买 nike

我想在 Angular 2 中发出以下 POST 请求。

http://gearman.local.eviry.com/info

正文如下

{"gearman_servers" :[{

"name" : "server 1",
"addr" : "192.168.1.115"
},
{
"name" : "Server 2",
"addr" : "192.0.1.126"
}
]}

我已经确保这在 Angular 2 之外也能正常工作。(使用 POSTMAN )我还确保启用了 CORS。

以下是我的 Angular 代码

var url = 'http://gearman.local.eviry.com' +
'/info';
var GEARMAN_DATA = {"gearman_servers" :[{
"name" : "server 1",
"addr" : "192.168.1.115"
},
{
"name" : "Server 2",
"addr" : "192.0.1.126"
}]};

let body = JSON.stringify(GEARMAN_DATA);
let headers = new Headers({ 'Content-Type': 'application/json' });
let options = new RequestOptions({ headers: headers });

this.http.post(url, body, options)
.map(res => res.json())
.subscribe(
data => {console.log(data);},
err => this.logError(err),
() => console.log('Fetching complete for Server Metrics')
);

logError(err:Response){
console.log("some error");
console.log(err);
}

但是,这样做会给我一个错误

XMLHttpRequest cannot load http://gearman.local.eviry.com/info. Invalid HTTP status code 405

此外,当我打印出 logError 函数中的错误时,我得到以下信息:

http://grab.by/O7s8

很难确定请求有什么问题。

请求头如图所示

 Accept:*/*
Accept-Encoding:gzip, deflate, sdch
Accept-Language:en-US,en;q=0.8
Access-Control-Request-Headers:content-type
Access-Control-Request-Method:POST
Cache-Control:no-cache
Connection:keep-alive
Host:gearman.local.eviry.com
Origin:http://evil.com/
Pragma:no-cache
Referer:http://localhost:3000/gearman-ui/job-queue
User-Agent:Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/44.0.2403.155 Safari/537.36
X-FirePHP:0.4.4
X-FirePHP-Version:0.4.4
X-Wf-Max-Combined-Size:262144

响应头如图所示

Allow:POST
Cache-Control:no-cache
Connection:Keep-Alive
Content-Length:4519
Content-Type:text/html; charset=UTF-8
Date:Mon, 15 Feb 2016 08:32:54 GMT
Keep-Alive:timeout=5, max=100
Server:Apache/2.2.24 (Unix) mod_ssl/2.2.24 OpenSSL/1.0.1e-fips

如果有人使用 POSTMAN ,我有以下有效的代码。我必须使用 angular 实现相同的功能。(请注意,您将无法访问 http://gearman.local.eviry.com)

https://www.getpostman.com/collections/f14ecaf29ffd52a54534

最佳答案

我尝试了您的请求(请参阅此 plunkr:http://plnkr.co/edit/6sbNYgIlCMNLkyyRerEk?p=preview),但您的预检请求的响应似乎不正确:

XMLHttpRequest cannot load http://gearman.local.eviry.com/info. Response for preflight is invalid (redirect)

看了这个的回复后,我有以下几点:

  • 一般

    Request URL:http://gearman.local.eviry.com/info
    Request Method:OPTIONS
    Status Code:302 Found
    Remote Address:49.212.179.100:80
  • 响应 header

    Connection:close
    Content-Length:293
    Content-Type:text/html; charset=iso-8859-1
    Date:Mon, 15 Feb 2016 08:12:44 GMT
    Location:https://gearman.local.eviry.com/info
    Server:Apache
  • 请求 header

    Accept:*/*
    Accept-Encoding:gzip, deflate, sdch
    Accept-Language:en-US,en;q=0.8,fr-FR;q=0.6,fr;q=0.4
    Access-Control-Request-Headers:content-type
    Access-Control-Request-Method:POST
    Cache-Control:no-cache
    Connection:keep-alive
    Host:gearman.local.eviry.com
    Origin:http://run.plnkr.co
    Pragma:no-cache
    Referer:http://run.plnkr.co/IwOhToeVuXn1o1a4/
    User-Agent:Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.109 Safari/537.36

这个请求的302状态码是我认为的问题。此外,我在其响应中没有看到任何 CORS header ...

关于angularjs - 在 Angular 2 中发出 http POST 请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35401520/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com