Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/432.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/365.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 浏览器解析相对URL,就像它们是绝对URL一样_Javascript_Java_Url_Browser_Client Side - Fatal编程技术网

Javascript 浏览器解析相对URL,就像它们是绝对URL一样

Javascript 浏览器解析相对URL,就像它们是绝对URL一样,javascript,java,url,browser,client-side,Javascript,Java,Url,Browser,Client Side,问题定义 在我的网页www.xxx.com/page上,有一个脚本: <script type="text/javascript" src="main.1234.js"></script> 浏览器将其重新设置为www.xxx.com/main.1234.js,而不是www.xxx.com/page/main.1234.js 有关我的设置的更多详细信息 事实上,有两个应用程序在同一台服务器上运行: www.xxx.com/(应用程序1) www.xxx.com:8

问题定义

在我的网页www.xxx.com/page上,有一个脚本:

<script type="text/javascript" src="main.1234.js"></script>

浏览器将其重新设置为www.xxx.com/main.1234.js,而不是www.xxx.com/page/main.1234.js


有关我的设置的更多详细信息

事实上,有两个应用程序在同一台服务器上运行:

  • www.xxx.com/(应用程序1)
  • www.xxx.com:82/(应用程序2)
该页面实际上以www.xxx.com:82/page的形式存在于应用程序2中。如果我直接访问该页面,则一切正常(即浏览器按预期解析链接)

但是我的设置有点复杂。我的目标是对任何公众访问隐藏app#2,并使其只能通过app#1(www.xxx.com/page)访问。为了实现这一点,我设置了app#1,这样,如果用户请求www.xxx.com/page,那么引擎盖下的app#1会向www.xxx.com:82/page请求app#2,并将收到的内容返回给用户

从用户的角度来看,所有内容都应该像www.xxx.com:82/page的内容一样位于www.xxx.com/page下。而且它几乎起作用了。唯一的问题是,出于某种原因,浏览器解析URL,正如我在“问题定义”中所述如何修复它?


其他信息,希望对您有所帮助

我想,答案应该隐藏在回应中。我想,这是因为浏览器接收到不同的响应头。以下是浏览器在这两种情况下接收的标题列表:

  • 来自应用程序1(www.xxx.com/page)的响应,其中浏览器错误解析URL:
    • 缓存控制:专用
    • 内容长度:775
    • 内容类型:text/html;字符集=UTF-8
    • 日期:2018年1月19日星期五11:34:40 GMT
    • 到期时间:1970年1月1日星期四UTC 00:00:00
    • 设置Cookie:zimidy initialSessionIdHash=-226086716;路径=/
    • 严格的交通安全:最大年龄为31536000岁;包含子域
    • X-Content-Type-Options:nosniff
    • X-Frame-Options:SAMEORIGIN
    • X-XSS-Protection:1;模式=块
  • 来自app#2(www.xxx.com:82/page)的响应,其中浏览器正确解析URL:
    • 接受范围:字节
    • 缓存控制:公共,最大年龄=0
    • 连接:保持活力
    • 日期:2018年1月19日星期五11:33:16 GMT
    • ETag:W/“307-1610e1964c4”
    • 最后修改:2018年1月19日星期五11:06:40 GMT
    • X-Powered-By:Express
    的URL

    main.1234.js

    从页面所在的位置开始。的URL

    /main.1234.js

    从baseurl的位置开始。您可能是指baseurl。如果路径是foo/bar/mypage,那么链接main.1234.js将在foo/bar/中搜索该文件。如果你在开头加一个斜杠,它会在baseurl中搜索该文件,该文件应该是根文件夹。

    RolandStarke给我的,这帮助我解决了这个问题

    此外,还可以找到该行为的解释


    要使相对URL正常工作,需要结束斜杠。我在应用程序2的链接中使用了它,但在应用程序1的链接中没有使用。在添加了结束斜杠之后,一切都开始工作了

    • 因此,此链接无法正常工作:
      www.xxx.com/app
    • 但这一条加上斜杠结尾的代码确实可以正常工作:
      www.xxx.com/app/

    您是否尝试过
    src=“/main.1234.js”>
    ?url解析正确。注意下面的斜杠:www.xxx.com/page->www.xxx.com/page/@RolandStarke哇!结束斜杠确实有帮助!我从没想过这有什么关系。你能评论一下,为什么它很重要,以及它如何影响行为吗?如果你把你的评论作为回答,我会接受的。谢谢这正是我所期望的。但它的工作原理不同,这就是我提出这个问题的原因。事实上,罗兰·斯塔克的回答帮助解决了这个问题。无论如何,谢谢你的回答!