我正在针对两个Pylons服务器进行开发并在本地进行测试。一台服务器在端口5000上,是被叫服务器。另一个是在端口7000上。后者创建一个cookie,指定前一个服务器使用的域。实质上,第一台服务器使用第二台服务器提供的凭据来模拟用户。
第一台服务器希望在运行时在其response.environ中找到一个auth令牌(确实是一个cookie)。当我在端口7000上的服务器上进行身份验证并在浏览器上对端口5000上的服务进行身份验证时,后一个服务器使用前者创建的cookie并且应用程序正常工作。
美中不足的是,第一台服务器创建了一个HTML5应用程序,该应用程序使用对第二台服务器的ajax调用,我无法将cookie包含在ajax调用中。我认为Chrome(我们正在使用/需要HTML5支持的浏览器)因跨域原因拒绝发送Cookie:从foo.net:7000
转到foo.net:5000
被视为跨域。
哦,ajax调用是通过jQuery。
有没有办法从在同一域中的端口上创建的HTML5应用程序到同一域但是不同端口的服务器进行ajax调用?
我不相信我可以使用dynamic script tag insertion因为我正在使用javascript进行调用,并且HTML在客户端运行时从其他javascript生成。至少,我认为这不是一个理想的解决方案。
我不相信Access-Control-Allow-*适用,因为我是从客户端到服务器,而不是其他方式。
我见过这个on jQuery and ports in ajax calls。我也见过this。
答案 0 :(得分:1)
绝对最简单的解决方案是使用JSON / P.我希望有一种更容易,更柔和的方法来实现这一目标,但我当然没有找到。
答案 1 :(得分:1)
同意Michael的观点,最简单的解决方案是JSONP。但即使在JSONP中,您也需要配置服务器以使其支持JSONP。许多服务器否认这一点,以保证他们的数据安全和健全。 JSONP希望您的服务器以可以评估为有效JSON的格式发送数据。但在每个JSONP请求和响应中都不是这样。所以,请注意这一点。