Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/33.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 从HTTP referer URL提取字段/属性_Javascript_Node.js_Regex_Restify - Fatal编程技术网

Javascript 从HTTP referer URL提取字段/属性

Javascript 从HTTP referer URL提取字段/属性,javascript,node.js,regex,restify,Javascript,Node.js,Regex,Restify,我有一个示例URL(referer) 我需要提取字段“state”的值。(在本例中为“somestate”)。我曾尝试使用substr()执行此操作,但我必须计算base64编码的子字符串的长度。(不太动态或安全) 作为替代方案,我会将其转换为JSON,并尝试从JSON中提取它 非常感谢。您需要使用Node.js的内置模块。您可以这样使用它: var url = require('url'); var querystring = require('querystring'); var str

我有一个示例URL(referer)

我需要提取字段“state”的值。(在本例中为“somestate”)。我曾尝试使用substr()执行此操作,但我必须计算base64编码的子字符串的长度。(不太动态或安全)

作为替代方案,我会将其转换为JSON,并尝试从JSON中提取它


非常感谢。

您需要使用Node.js的内置模块。您可以这样使用它:

var url = require('url');
var querystring = require('querystring');

var str = 'http://172.20.0.83:30923/oauth/authorize?client_id=8193654a-0b63-41df-953e-e6ae10807935&client_secret=somesecret&response_type=code&state=somestate&redirect_uri=https://somestring.ngrok.io/api/oauthcallback';

var state = querystring.parse(url.parse(str).query).state; // somestate

您需要使用Node.js的内置模块。您可以这样使用它:

var url = require('url');
var querystring = require('querystring');

var str = 'http://172.20.0.83:30923/oauth/authorize?client_id=8193654a-0b63-41df-953e-e6ae10807935&client_secret=somesecret&response_type=code&state=somestate&redirect_uri=https://somestring.ngrok.io/api/oauthcallback';

var state = querystring.parse(url.parse(str).query).state; // somestate

在处理标准数据格式时,不要尝试使用正则表达式或substr来运行自己的解析器。这是一个网址。查找现有的URL解析器

Node.js是

注意:正如文档提到的,Node有两个URL解析器。
URL
全局和
URL
模块,您可以
要求
。您需要一个相对较新的Node版本来使用
URL
global。如果没有,请升级Node.js安装

作为替代方案,我会将其转换为JSON,并尝试从JSON中提取它


这将是一个骗局。要将其转换为JSON,首先需要对其进行解析。一旦你有了解析数据,仍然需要将其转换为JSON,然后立即将其转换回你已经拥有的解析数据。

在处理标准数据格式时,不要尝试使用正则表达式或substr来运行你自己的解析器。这是一个网址。查找现有的URL解析器

var url_string = "http://172.20.0.83:30923/oauth/authorize?client_id=8193654a-0b63-41df-953e-e6ae10807935&client_secret=somesecret&response_type=code&state=somestate=&redirect_uri=https://somestring.ngrok.io/api/oauthcallback"; // or you can use window.location.href
var url = new URL(url_string);
var c = url.searchParams.get("state");
console.log(c);
Node.js是

注意:正如文档提到的,Node有两个URL解析器。
URL
全局和
URL
模块,您可以
要求
。您需要一个相对较新的Node版本来使用
URL
global。如果没有,请升级Node.js安装

作为替代方案,我会将其转换为JSON,并尝试从JSON中提取它


这将是一个骗局。要将其转换为JSON,首先需要对其进行解析。一旦您有了解析数据,仍然需要将其转换为JSON,以便立即将其转换回您已有的解析数据。

您在这里使用的是
url
模块。声明:它的维护完全是为了与现有应用程序向后兼容。新的应用程序代码应该使用WHATWGAPI@Quentin是的,但这不是留下一个运行良好的著名api的理由。您正在使用
url
模块。声明:它的维护完全是为了与现有应用程序向后兼容。新的应用程序代码应该使用WHATWGAPI@Quentin是的,但这不是离开一个运行良好的知名api的理由。
var url_string = "http://172.20.0.83:30923/oauth/authorize?client_id=8193654a-0b63-41df-953e-e6ae10807935&client_secret=somesecret&response_type=code&state=somestate=&redirect_uri=https://somestring.ngrok.io/api/oauthcallback"; // or you can use window.location.href
var url = new URL(url_string);
var c = url.searchParams.get("state");
console.log(c);