Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/http/4.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 未处理的拒绝错误:StatusCodeError:401(未经授权:由于凭据无效,访问被拒绝)_Javascript_Http_Authentication_Request_Request Promise - Fatal编程技术网

Javascript 未处理的拒绝错误:StatusCodeError:401(未经授权:由于凭据无效,访问被拒绝)

Javascript 未处理的拒绝错误:StatusCodeError:401(未经授权:由于凭据无效,访问被拒绝),javascript,http,authentication,request,request-promise,Javascript,Http,Authentication,Request,Request Promise,此页面显示纯空html/body标记中的JSON。例如: <html> <body> **JSON DATA *** </body> </html> 我试着改变周围的一切。比如添加标题,或者将json:true,或者将sendInstant更改为true。什么都不管用。我不明白什么,或者我做错了什么 以下是显示终端中错误的图像: 谢谢据我了解,问题是:登录后可以成功显示URL页面,但程序无法直接获取URL本身 此问题的原因是:r

此页面显示纯空html/body标记中的JSON。例如:

<html>
  <body>
    **JSON DATA ***
  </body>
</html>
我试着改变周围的一切。比如添加标题,或者将json:true,或者将sendInstant更改为true。什么都不管用。我不明白什么,或者我做错了什么

以下是显示终端中错误的图像:


谢谢

据我了解,问题是:登录后可以成功显示URL页面,但程序无法直接获取URL本身

此问题的原因是:
request promise
(继承自模块
request
)的
auth
选项通过在HTTP请求()中添加
授权
头来工作。这被调用,许多服务器可能不支持。不幸的是,在当前的网络世界中,基本访问身份验证不再流行(它不安全),而且很可能
emodal.com
不支持它。实际上,我在
www.emodal.com
中找到了一个名为
ASP.NET\u SessionId
的cookie,它表明该站点正在使用SessionId cookie对用户进行身份验证


为了解决这个问题,我认为程序需要在成功登录后登录并保存SessionId cookie。然后,通过在HTTP请求头中添加SessionId cookie来获取URL资源。

据我所知,问题是:登录后可以成功显示URL页面,但程序无法直接获取URL本身

此问题的原因是:
request promise
(继承自模块
request
)的
auth
选项通过在HTTP请求()中添加
授权
头来工作。这被调用,许多服务器可能不支持。不幸的是,在当前的网络世界中,基本访问身份验证不再流行(它不安全),而且很可能
emodal.com
不支持它。实际上,我在
www.emodal.com
中找到了一个名为
ASP.NET\u SessionId
的cookie,它表明该站点正在使用SessionId cookie对用户进行身份验证


为了解决这个问题,我认为程序需要在成功登录后登录并保存SessionId cookie。然后,通过在HTTP请求头中添加SessionId cookie来获取URL资源。

这是一张显示终端中错误的图片
-复制/粘贴文本会更快更容易使用
这是一张显示终端中错误的图片
-复制/粘贴文本会更快更容易使用
import dotenv = require('dotenv');
dotenv.config({ path: '../logins.env' });
import rp = require('request-promise');
const jsonUrl = `http://availability.emodal.com/ImportAvailability/GetContainerInfoList?sgrdModel=%7B%22searchtext%22:%22%22,%22page%22:1,%22pageSize%22:280,%22sortBy%22:%221%22,%22sortDirection%22:%22asc%22,%22sortColumns%22:%22%22%7D`;

const authOpts = {
  uri: jsonUrl,
  auth: {
    user: process.env.EMODAL_id,
    pass: process.env.EMODAL_pw,
    sendImmediately: false
  },
  method: 'get'
}

rp(authOpts)
.then(resp => {
  console.log(resp);
}).catch(err => { throw Error(err)});