Javascript 从HTTP referer URL提取字段/属性
我有一个示例URL(referer) 我需要提取字段“state”的值。(在本例中为“somestate”)。我曾尝试使用substr()执行此操作,但我必须计算base64编码的子字符串的长度。(不太动态或安全) 作为替代方案,我会将其转换为JSON,并尝试从JSON中提取它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
非常感谢。您需要使用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);