运行

时间:2017-02-08 22:46:01

标签: javascript ajax node.js browser

当我尝试运行http请求时遇到问题我的NodeJS应用程序出于某种奇怪的原因决定将我的域添加到我在http请求中设置的URL。我如何确保不会发生这种情况?

我尝试搜索类似的问题,但没有找到。可能是我不确定实际搜索的内容。

以下是我想要运行的内容:

$.ajax({
    url: 'xxx.xxx.xxx.xxx',
    type: 'PUT',
    headers: {
        'value': 'value',
        'value2': 'value2' 
    },
    success: function(result) {
        // extra code...
    }
});    

这就是请求中发生的情况,如从控制台中看到的那样:

$.ajax({
    url: 'http://localhost:8080/xxx.xxx.xxx.xxx', // (added localhost)
    type: 'PUT',
    headers: {
       'value': 'value',
       'value2': 'value2' 
    },
    success: function(result) {
        // extra code...
    }
});

值得注意的是(也许)如果我将http://添加到我的请求URL,它在运行时不会改变,但是不接受该URL。此请求将在客户端运行,即在浏览器中运行。

3 个答案:

答案 0 :(得分:0)

这是绝对网址和相对网址之间的差异。没有协议的网址被视为相对网址,因此会发生以下情况。

相对网址:user / 1

当前位置:http://google.com/products

结果:http://google.com/products/user/1

相对网址:/ user / 1

当前位置:http://google.com/products

结果:http://google.com/user/1

答案 1 :(得分:0)

你的URL不是一个有效的URL,因为它缺少一个方案,也可能缺少其他位,所以ajax正在猜测你的意思。

ajax()的默认设置是查询当前页面http://localhost:8080,并将您提供的内容作为该页面上的路径。

请改为尝试:

  

url:'http://xxx.xxx.xxx.xxx',

答案 2 :(得分:0)

如果xxx.xxx.xxx.xxx是其他网站的网址,则必须指定协议,否则xxx.xxx.xxx.xxx将被解释为相对路径。

通常,这也适用于src属性(适用于imgsrciptiframe ...)。除非指定协议,否则页面中的任何链接都将被视为相对路径。

例如:(仅用于解释)在Windows上如果你有一个像some\thing这样的路径,它将相对于你试图访问它的地方(绝对路径在哪里)您尝试访问它将自动添加到路径some\thing)。但是如果您的路径是C:\some\thing,那么无论访问何处,路径都将始终相同。协议以类似的方式工作。