为了避免localhost上的JavaScript与实际上是同一台机器的计算机上的Aspx之间的跨域,应用以下技巧:
JavaScript在机器A上打开http://localhost:port/site/page1.aspx,它在page_load()上执行response.redirect()到http://computername/site/page2。
完成后,Page2将response.redirect()返回http://localhost:port/site/page1.aspx?ReturnValue,并将ReturnValue在page1中复制到客户端字段,因此原始调用JavaScript可以访问它。
问题是访问被拒绝错误,尽管Javascript和page1应该被认为是同一个域。仅当使用http://localhost/打开page2时,才会出现问题。
知道为什么会这样吗?
答案 0 :(得分:0)
要查看问题,您需要了解重定向的工作原理。重定向是包含重定向指令(Location
标头)的服务器响应。重定向不会发生在服务器上,但在浏览器中,它只是浏览器转到不同页面的指令。
所以序列将如下所示:
http://localhost:port/site/page1.aspx
http://computername/site/page2
http://computername/site/page2
。localhost:port
的请求,因为computername
是一个不同的域,此请求将被阻止。因此,永远不会向http://computername/site/page2
发出请求,因此不会生成到http://localhost:port/site/page1.aspx?ReturnValue
的重定向。