post - HTTP 发布请求 : 401 (Unauthorized)

标签 post cors httprequest

我有以下问题:

我的服务器以 401 错误响应 HTTP POST。在同一个 webapp 中,我可以使用 HTTP GET 请求并且工作正常。我用 postman 测试了 POST 请求,我能够成功获取数据(所以至少它在工作)...

请求码(复制自Postman):

      var data = JSON.stringify({
        "query": {
          "objectTypeId": "168"
        }
      });

      var xhr = new XMLHttpRequest();
      xhr.withCredentials = true;

      xhr.addEventListener("readystatechange", function () {
        if (this.readyState === 4) {
          console.log(this.responseText);
        }
      });

      xhr.open("POST", <here is my url>);
      xhr.setRequestHeader("Content-Type", "application/json");
      xhr.setRequestHeader("crossdomain", "true");
      xhr.setRequestHeader("Authorization", "Basic XXXXXXXX");

      xhr.send(data);

我发现与此问题相关的大多数线程都指向 CORS 配置,但我认为这是有效的,因为 get-request 有效。无论如何,这是 CORS 配置:

web.xml:

    <filter-mapping>
    <filter-name>springSecurityFilterChain</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>

<filter>
    <filter-name>CORS</filter-name>
    <filter-class>com.thetransactioncompany.cors.CORSFilter</filter-class>
    <init-param>
        <param-name>cors.configurationFile</param-name>
        <param-value>/WEB-INF/cors.properties</param-value>
    </init-param>
</filter>

cors.properties:

cors.allowGenericHttpRequests = true
cors.allowOrigin=*
cors.supportsCredentials = true
cors.supportedMethods=GET, POST, HEAD, PUT, DELETE, OPTIONS
cors.supportedHeaders=*

最佳答案

事实上,这是一个 CORS 问题。您的 API 需要正确回答这些 OPTIONS 请求,否则浏览器将阻止该请求。相关外部链接:https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS .

SO 上的其他人也针对此问题提供了其他更深入的答案。可以找到一个很好的长格式答案 here .

关于post - HTTP 发布请求 : 401 (Unauthorized),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49939923/

相关文章:

JQuery ajax 使用 POST 从启用 CORS 的服务器获取图像/png

php - Laravel POST 请求 Cors No 'Access-Control-Allow-Origin'

scala - 使用 Netty 和 Scala Actor 的异步 http 请求

javascript - onload XMLHttpRequest 外部变量

android - 如何处理 WebViewClient.shouldInterceptRequest() 中的 IOException

php - 通过 PHP 表单在数据库中插入值

php - 如何使用 PHP 通过 Graph API 将视频发布到 Facebook

angular - 如何使用 angular 2 将表单数据发送到服务器 api?

http - 在 Servlet 中发送和接收二进制数据

Spring CORS Controller 注释不起作用