Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/421.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何从Phabricator域之外获取登录用户信息?_Javascript_Php_Cors_Phabricator - Fatal编程技术网

Javascript 如何从Phabricator域之外获取登录用户信息?

Javascript 如何从Phabricator域之外获取登录用户信息?,javascript,php,cors,phabricator,Javascript,Php,Cors,Phabricator,简而言之,我在域a上有一个Pharmicator设置,但是我必须在域B上实现一个依赖于Pharmicator的服务 这就是故事,我正在尝试使用Phabricator管道user.whoamiAPI收集信息,以查看当前用户是否登录。但由于种种原因,我没能去。我想知道这样做的正确方法是什么 我试过三种方法,但都不管用。这是我试过的 方法1:使用Ajax请求 我所做的只是使用api令牌触发一个POST Ajax请求 $.ajax({ url: 'http://127.0.0.1:8080/ap

简而言之,我在域a上有一个Pharmicator设置,但是我必须在域B上实现一个依赖于Pharmicator的服务

这就是故事,我正在尝试使用Phabricator管道
user.whoami
API收集信息,以查看当前用户是否登录。但由于种种原因,我没能去。我想知道这样做的正确方法是什么

我试过三种方法,但都不管用。这是我试过的

方法1:使用Ajax请求
我所做的只是使用api令牌触发一个POST Ajax请求

$.ajax({
    url: 'http://127.0.0.1:8080/api/user.whoami', 
    method: 'POST', 
    cache: false, 
    data: 'api-token='+app.PHABRICATOR_APIKEY
}).done(function(response) {
    console.dir(response);
}).fail(function(jqXHR, textStatus) {
    console.log(textStatus);
});
此方法不起作用(如预期),因为它是CORS请求,并且Phabricator服务器没有
访问控制允许来源

<>虽然我可以补充说<代码>访问控制允许原点< /代码>标头,但不知何故,这需要修改PHabReCalver源代码,所以我会认为这是我最后的解决方案。 方法2:使用PHP作为代理,并在内部使用curl请求它。因此,整个请求将类似于
客户端浏览器PHP代理脚本Phabricator
这个方法实际上能够发送请求并获得响应。但是信息是错误的,因为它只返回API密钥的用户

如果我理解正确的话,
curl
没有我的浏览器会话,因此它无法真正知道我(浏览器客户端)是谁。因此,我假设API将回退以使用API键的信息,从而返回我不打算返回的信息

方法3:使用Phabricator提供的PHP库

require_once '/var/www/html/phabricator/libphutil/src/__phutil_library_init__.php';

$api_token = PHABRICATOR_APIKEY;
$api_parameters = array();

$client = new ConduitClient('http://127.0.0.1:8080/');
$client->setConduitToken($api_token);

$result = $client->callMethodSynchronous('user.whoami', $api_parameters);

return $result;
这也没什么特别的,只是文档中代码的直接副本。但它同样只返回API密钥所属的用户。我认为这和方法2的表现是一样的

我在想,如果我以错误的方式理解了管道API。更重要的是,我想知道如何实现整个体系结构,以便它能够使用当前的浏览器会话收集信息。多谢各位