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

Activiti REST在GET请求后返回401

云何平
2023-03-14

当我尝试向Activiti REST URL发送GET请求时,使用POSTMAN并配置授权参数(kermit:kermit),它就像一个符咒。

但是当我尝试做同样的事情时,只使用Angular$超文本传输协议服务,它返回以下错误:

无法加载XMLHttpRequesthttp://localhost:8080/activiti-rest/service/repository/deployments。对飞行前请求的响应未通过访问控制检查:请求的资源上不存在“access control Allow Origin”标头。原点'http://localhost:8081因此不允许访问。响应的HTTP状态代码为401。

这是我的控制器:

(function() {
'use strict';

angular
    .module('doktorat-app-test')
    .controller('TestController', TestController);

TestController.$inject = ['$http', '$base64'];
function TestController($http, $base64) {
    var tcr = this;
    $http.defaults.headers.common['Authorization'] = 'Basic ' + $base64.encode('kermit:kermit');


    tcr.text = 'ssdsds';


    $http.get('http://localhost:8080/activiti-rest/service/repository/deployments')
    .then(function(response){
        tcr.text = response.data;
    });
}

})();

有人遇到过类似的错误吗?花了超过2天的时间试图解决这个问题,但没有任何成功。

P、 我正在使用NodeJS http服务器来运行我的Angular应用程序,它运行在端口8081上。

共有2个答案

廖华翰
2023-03-14

要允许特定域的CORS,您可以使用如下中间件:

app.use(function(req, res, next) {
    res.header("Access-Control-Allow-Origin", "http://localhost:8081");
    res.header("Access-Control-Allow-Methods", "GET, POST, PUT, DELETE, OPTIONS");
    res.header("Access-Control-Allow-Credentials", "true");
    res.header("Access-Control-Allow-Headers", "Content-Type, Accept, Authorization, X-Requested-With");
    next();
});
董鸣
2023-03-14

由于您正在尝试访问位于http://localhost:8081/Fromhttp://localhost:8080/上的rest api,浏览器将检查您的服务器是否使用预检请求实现CORS。您可以在下面的url上获得有关CORS的详细信息:

https://developer.mozilla.org/en-US/docs/Web/HTTP/Access_control_CORS

通常,托管在一台服务器上的应用程序不允许访问托管在其他服务器上的资源。这一限制现在由所有浏览器执行。

为了使其工作,您的rest api服务器必须告诉其他一些服务器也将被允许调用。为此,您需要在RESTAPI服务器中实现CORS文件管理器。

由于您没有指定在REST中使用的语言,我为JAVA提供了一个开源的CORS过滤器库:

http://software.dzhuvinov.com/cors-filter.html

这解决了你的问题。

 类似资料:
  • 我是SNMP新手,我正在尝试使用SNMP操作,我正在使用http://techdive.in/snmp/snmp4j-snmp-get-example代码,但我无法获得预期的输出。我得到如下空响应: SNMP获取演示正在向代理发送请求。。。从代理Snmp获取响应获取响应=[1.3.6.1.2.1.1.1.0=Null] 当我试图为MIB RFC 1213的OID获取sysDescr时,预期的输出应

  • 我正在尝试对远程服务器进行api调用,最初,我遇到以下错误:

  • 当我试图用WebClient发送GET请求时,我响应错误io.netty.channel.AbstractChannel$annotatedConnectException:Connection Delection:localhost/ *WebClient初始化*

  • 在一些请求中,我们会做一些日志的推送、用户数据的统计等和返回给终端数据无关的操作。而这些操作,即使你用异步非阻塞的方式,在终端看来,也是会影响速度的。这个和我们的原则:终端请求,需要用最快的速度返回给终端,是冲突的。 这时候,最理想的是,获取完给终端返回的数据后,就断开连接,后面的日志和统计等动作,在断开连接后,后台继续完成即可。 怎么做到呢?我们先看其中的一种方法: local response

  • 我已经使用zappa在aws lambda上部署了一个flask应用程序,现在该应用程序在所有endpoint上都运行良好,除了我的主endpoint,当我对其发出post请求时,它返回{“消息”:“endpoint请求超时”} 真的需要一个修复或想法如何克服这个我需要调用分析路线,部署的url是 https://2ixfyfcsik.execute-api.eu-west-2.amazonaws

  • 在进行内容协商测试时,尽管响应状态为200,但mock GET在响应体中返回null。 这里是完整的测试类代码。我想验证内容类型是json。 这是我的控制器的endpoint。 有没有想过为什么身体会返回为空?