【问题标题】:AngularJS: XHR returning net::ERR_METHOD_NOT_SUPPORTED error to PUT/POST requestsAngularJS:XHR 向 PUT/POST 请求返回 net::ERR_METHOD_NOT_SUPPORTED 错误
【发布时间】:2020-01-07 09:12:55
【问题描述】:

我在处理服务器对 PUT 请求的响应时遇到问题(POST 也是如此)。从以下 CORS 飞行前请求开始。

请求:

OPTIONS /open/Patient/1 HTTP/1.1
Host: remoteserver.com
Connection: keep-alive
Pragma: no-cache
Cache-Control: no-cache
Access-Control-Request-Method: PUT
Origin: http://myclient
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/37.0.2062.120 Safari/537.36
Access-Control-Request-Headers: accept, content-type
Accept: */*
DNT: 1
Referer: http://myclient/patient/2JT
Accept-Encoding: gzip,deflate,sdch
Accept-Language: en-US,en;q=0.8

回复:

HTTP/1.1 200 OK
Connection: keep-alive
Content-Length: 0
Date: Sat, 13 Sep 2014 16:58:28 GMT
Access-Control-Allow-Origin: *
Access-Control-Expose-Headers: Content-Location, Location
Access-Control-Allow-Methods: GET, POST, PUT, DELETE, OPTIONS
Access-Control-Allow-Headers: accept, content-type
Access-Control-Request-Method: GET, POST, PUT, DELETE
Server: Name of remote server

然后是实际的请求:

PUT /open/Patient/1 HTTP/1.1
Host: remoteserver.com
Connection: keep-alive
Content-Length: 775
Pragma: no-cache
Cache-Control: no-cache
Accept: application/json+fhir, application/json, text/plain, */*
Origin: http://myclient
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/37.0.2062.120 Safari/537.36
Content-Type: application/json+fhir
DNT: 1
Referer: http://myclient/patient/2JT
Accept-Encoding: gzip,deflate,sdch
Accept-Language: en-US,en;q=0.8

AngularJS没有处理响应,而是报如下错误:

net::ERR_METHOD_NOT_SUPPORTED

响应正文为空,状态为“0”。问题是,如果我在 Chrome 调试器中设置断点,在单步执行代码之后,我确实会得到一个成功的响应。这是我在回复中得到的:

HTTP/1.1 200 OK
Connection: keep-alive
Content-Encoding: gzip
Content-Type: application/json+fhir; charset=UTF-8
Content-Length: 154
Date: Sat, 13 Sep 2014 17:13:35 GMT
Pragma: no-cache
Access-Control-Allow-Origin: *
Access-Control-Expose-Headers: Content-Location, Location
Access-Control-Allow-Methods: GET, POST, PUT, DELETE, OPTIONS
Content-Location: http://remoteserver/open/Patient/1/_history/6
Server: Health Intersections FHIR Server

这是我使用 $http 发送请求的代码主体:

function updateResource(resourceUrl, resource) {
    var deferred = $q.defer();
    $http.put(resourceUrl, resource)
        .success(function (data, status, headers, config) {
            var results = {};
            results.data = data;
            results.headers = headers();
            results.status = status;
            results.config = config;
            deferred.resolve(results);
        })
        .error(function (data, status) {
            var error = { "status": status, "outcome": data };
            deferred.reject(error);
        });
    return deferred.promise;
}

【问题讨论】:

  • 我已经与服务器的开发人员合作解决了这个问题。原来服务器处理连接的方式存在问题。已解决。

标签: angularjs xmlhttprequest


【解决方案1】:

我已经与服务器的开发人员合作解决了这个问题。原来服务器处理连接的方式存在问题。已解决。

【讨论】:

    猜你喜欢
    • 2019-07-28
    • 1970-01-01
    • 2015-07-05
    • 2017-07-24
    • 1970-01-01
    • 2016-02-25
    • 1970-01-01
    • 1970-01-01
    • 2015-06-02
    相关资源
    最近更新 更多