HTTP Post请求:401(未经授权)

HTTP Post请求:401(未经授权),post,cors,httprequest,Post,Cors,Httprequest,我有以下问题: 我的服务器以401错误响应HTTP POST。在同一个webapp中,我可以使用httpget请求,这很好。我和邮递员一起测试了POST请求,并且我能够成功地获取数据(所以至少它是有效的) 请求代码(从邮递员处复制): 事实上,这是一个CORS问题。您的API需要正确回答这些选项请求,否则浏览器将阻止该请求。相关外部链接: 其他人也为这个问题提供了其他更深入的答案。可以找到一个很好的长格式答案。401未经授权响应的实际主体是什么?加载url1失败:对飞行前请求的响应未通过访问控制

我有以下问题:

我的服务器以401错误响应HTTP POST。在同一个webapp中,我可以使用httpget请求,这很好。我和邮递员一起测试了POST请求,并且我能够成功地获取数据(所以至少它是有效的)

请求代码(从邮递员处复制):


事实上,这是一个CORS问题。您的API需要正确回答这些选项请求,否则浏览器将阻止该请求。相关外部链接:


其他人也为这个问题提供了其他更深入的答案。可以找到一个很好的长格式答案。

401未经授权响应的实际主体是什么?加载url1失败:对飞行前请求的响应未通过访问控制检查:请求的资源上不存在“访问控制允许来源”标头。因此,不允许访问源“mywebapp”。响应的HTTP状态代码为401。好吧,这肯定是CORS的问题。但HTTP get请求是否正常工作?…假定get请求不修改状态,因此不存在安全风险。我看一下。现在非常感谢:)我。。。我尝试了这个卷发请求,但我的回答对我没有帮助。。。此线程中的家伙没有谈论401响应:/HTTP/1.1 401未经授权的服务器:Apache Coyote/1.1 Set Cookie:JSESSIONID=9F19A2240C0379723974376E8FB6FD19;路径=/;HttpOnly连接:保持活动WWW-Authenticate:Basic realm=“x-gateway”传输编码:分块日期:2018年4月20日星期五12:17:56 GMTHMMM。。。。因此,似乎你必须在url本身的curl中传递你的登录凭据。。。比如:。。。。现在我在curl中得到了204个响应:HTTP/1.1 204无内容集Cookie:JSESSIONID=7C96B00F0E58FBC901CA57F30182F5C9;路径=/;HttpOnly X-Application-Context:os-gateway:prod:80 Server:Apache Coyote/1.1访问控制允许凭据:真实访问控制允许来源:myurl变化:来源允许:HEAD、POST、GET、OPTIONS日期:2018年4月30日周一08:48:46 GMT但不知何故,当我在浏览器中运行我的应用程序时,它仍然显示:401有任何想法吗?正如我之前所说,这是一个CORS问题。CORS问题在浏览器中突然出现,但不是通过Postman、curl等无浏览器HTTP客户端。事实上,您收到401,而另一个人收到403是不相关的-基本问题是相同的,差异是由于您使用不同的CORS中间件拥有不同的服务器。
      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);
    <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.allowGenericHttpRequests = true
cors.allowOrigin=*
cors.supportsCredentials = true
cors.supportedMethods=GET, POST, HEAD, PUT, DELETE, OPTIONS
cors.supportedHeaders=*