【问题标题】:How to get "file" parameter of http request in javascript?如何在javascript中获取http请求的“文件”参数?
【发布时间】:2020-02-12 21:01:11
【问题描述】:

我正在尝试编写一个 java 脚本脚本,该脚本根据用户是否正确登录会将他们重定向到单独的 PHP 脚本。问题是我似乎无法弄清楚如何获取请求的文件参数,以便我可以查看我正在寻找的请求是否存在。如何在 java 脚本中获取请求的文件参数? 很抱歉产生误解,我所说的文件属性是指以下每个请求的“文件”部分下的内容。 example

那么如果在数据包的文件选项卡下,它设置了某个文件,我将如何区分?

【问题讨论】:

  • 你问的没有任何意义。请尽量解释清楚——HTTP请求没有“文件参数”。
  • 嗯,HTTP 请求 可能 有许多不同的东西,可以称为“文件参数”,但我不知道 OP 要求的是哪个(如果有的话)关于。我什至不知道他们在问什么请求。这个问题需要更多信息才能得到解答。

标签: javascript html xmlhttprequest


【解决方案1】:

不清楚你在问什么。 “以便我可以查看我正在寻找的请求是否存在”部分告诉我,您想要调试您的网站,或者至少,这是我对它的解释。

如果您使用 Chrome 或Firefox Developer Edition,您可以按 F12(或 CTRL + SHIFT + J)打开开发者控制台。

切换到“网络”选项卡,您将看到所有 XMLHTTPRequest。
单击特定请求,您将看到其详细信息。

一个基本的 XmlHttpReuqest 是这样的:

function reqListener () {
  console.log(this.responseText);
}

var oReq = new XMLHttpRequest();
oReq.addEventListener("load", reqListener);
oReq.open("GET", "http://www.example.org/example.txt");
oReq.send();

然后你在回调函数 reqListener 中得到你的请求结果。

另见https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/Using_XMLHttpRequest

如果您想获取请求处理程序的 URL,如下所示:

function reqListener (e) {
  //console.log(this.responseText);
   console.log(e);
   console.log(e.currentTarget.responseURL);

}

var oReq = new XMLHttpRequest();
oReq.addEventListener("load", reqListener);
oReq.open("GET", "https://stackoverflow.com/questions/58407228");
oReq.send();

如果你想在 url 中获取一个名为“file”的参数,就像这样

function getUrlVars(urlHref)
{
    var vars = [], hash;
    var hashes = urlHref.slice(urlHref.indexOf('?') + 1).split('&');
    var i;

    for (i = 0; i < hashes.length; i++)
    {
        hash = hashes[i].split('=');
        vars.push(decodeURIComponent(hash[0]));
        vars[decodeURIComponent(hash[0])] = decodeURIComponent(hash[1]);
    } // Next i 

    return vars;
} // End Function getUrlVars


var dictParameters = getUrlVars("http://www.example.com/handler?file=bla.bin");

if (dictParameters.contains("file"))
{
    console.log(dictParameters["file"]);
}

对于 XMLHTTPRequest,它没有名为 file 的属性。

另外,现在是 2019 年,你应该是 using the FETCH-APIasyncawait,而不是 XMLHttpRequest-API,它不使用 promises

这是getting started overview

编辑: 啊,我明白了:

如果你有一个url,比如

var url = "http://www6.scratch99.com/web-development/javascript/test.js?abc=def";

你会的

var url = "http://www6.scratch99.com";
var urlParts = url.replace('http://','').replace('https://','').split(/[/?#]/);
var domain = urlParts[0];

获取域部分。然后减去域(+协议),并以 ?或#:

完整代码:

var url = "http://www6.scratch99.com/web-development/javascript/test.js?abc=def";
// var url = "http://www6.scratch99.com";
// var url = "http://www6.scratch99.com?test=123";
var protocol = url.substr(0, url.indexOf(":") + 3)

var urlParts = url.substr(protocol.length).split(/[/?#]/);
var domain = urlParts[0];

var fileParts = url.substr(protocol.length + domain.length);
var file = fileParts.split(/[?#]/)[0];

如果你只想要文件名:

var pathParts = file.split('/');
var fileOnly = pathParts[pathParts.length-1];

【讨论】:

  • 问题是询问如何在 JavaScript 中做某事(可能是这样,真的不清楚)……而不是使用开发者工具 GUI。
  • @Quentin:不清楚他在问什么。 “以便我可以看到我正在寻找的请求是否存在”部分告诉我,他想调试他的网站,或者至少,这是我对它的解释。
  • 它在标签中两次显示“在 javascript 中”。这似乎很清楚。其余的,似乎一点都不清楚。我认为这个问题在目前的状态下是无法回答的。
  • @Quentin:同意你的观点。
  • 对不起,不够清晰。希望编辑有所帮助?
猜你喜欢
  • 2011-02-28
  • 1970-01-01
  • 1970-01-01
  • 2013-05-20
  • 1970-01-01
  • 2015-11-01
  • 2010-10-24
  • 1970-01-01
  • 2019-08-05
相关资源
最近更新 更多