我正在尝试在JS中创建new URL,以便可以为异步请求进行操作。因为没有什么是跨域的(我认为这是该术语的正确用法),所以我发送给异步请求的URL看起来像/MyLoginUrl或/ MyUpdateDataUrl等(即,我仅发送路径名)。

我尝试从现有网址创建new URL基本上是这样的:

// Actually I set the url as an arguement in a function,
// but for demonstration it will be a variable
var url = '/myPathname';

// Much later...
url = new URL (url);


但是,这返回了语法错误。一旦看了docs,我就知道了原因。

根据文档,new URL的语法如下所示:


  url = new URL(urlString, [baseURLstring])
  
  url = new URL(urlString, baseURLobject)


该文档还说:


  baseURLstring:是一个DOMString,表示在urlString是相对URL的情况下要使用的基本URL。如果未指定,并且没有在参数中传递baseURLobject,则默认为'about:blank'。如果它是无效的绝对URL,则构造函数将引发SYNTAX_ERROR类型的DOMException。


文档中baseURLstring的几个示例是:

var a = new URL("/", "https://developer.mozilla.org"); // Creates a URL pointing to 'https://developer.mozilla.org/'
var b = new URL("https://developer.mozilla.org");      // Creates a URL pointing to 'https://developer.mozilla.org/'
var c = new URL('en-US/docs', b);                      // Creates a URL pointing to 'https://developer.mozilla.org/en-US/docs'


因此,我试图弄清楚如何为当前的baseURLstring模拟localhost,最终当它由我将用于网络的主服务器托管时,该模拟为baseURLstring。我猜想这将以某种方式涉及获取我拥有/网络中服务器的计算机的IP地址,或者可能不是。

最佳答案

你可以测试一下

var base_url = location.protocol + '//' + location.host + '/';

10-06 12:32