Gra*_*ler 84 javascript ajax jquery
我正在尝试将脚本连接到Microsoft的World-Wide Telescope应用程序.后者在端口5050上侦听命令.它与浏览器在同一台机器上运行(Chrome现在,但据我所知,Firefox 7和IE 9的行为相同).
我正在使用原始html文件发送"Access-Control-Allow-Origin:*"标头,以尝试消除XSS限制作为我的问题.
我访问WWT的代码如下:
$.ajax({
type: 'POST',
url: url,
data: data,
crossDomain: true,
success: success,
dataType: dataType
});
Run Code Online (Sandbox Code Playgroud)
在这种情况下,url是"http://127.0.0.1:5050/layerApi.aspx?cmd = new&..."(显然......这里是一些额外参数的简写).
看看Chrome中的网络诊断,我可以看到:
Request URL:http://127.0.0.1:5050/layerApi.aspx?cmd=new&...
Request Headersview source
Accept:application/xml, text/xml, */*; q=0.01
Content-Type:application/x-www-form-urlencoded
Origin:http://gwheeler4
Referer:http://gwheeler4/conceptconnect.html
User-Agent:Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/14.0.835.186 Safari/535.1
Run Code Online (Sandbox Code Playgroud)
请求即将发布 - 我看到WWT创建了一个新层.但是,我没有得到回调.如果我添加一个错误回调被调用,但jqXHR对象的错误属性只是一个"错误"和状态是0.如果我看在Chrome网络请求之我见"(取消)"作为状态,并没有任何反应.
如果我使用相同的URL并将其粘贴到新的浏览器选项卡中,我可以看到响应是预期的XML.
当然,这里的一个区别是,这是一个GET而不是POST,但我已经在我的脚本中尝试过这个并没有什么区别.
我对此感到非常难过,并会欣赏任何新鲜的想法.
Kaz*_*kai 131
如果有其他人遇到此问题,我们遇到的问题是我们是从链接发出ajax请求,而不是阻止链接被跟踪.因此,如果您在onclick属性中执行此操作,请确保return false;也是如此.
Ben*_*ing 110
如果您使用的是Chrome,则无法在标准Chrome网络面板中看到足够的信息来确定(canceled)请求的根本原因.
您需要使用chrome://net-internals/#events它来显示您要发送的请求的血腥细节 - 包括隐藏的重定向/有关发送cookie的安全信息等.
例如,下面显示了我在网络跟踪中没有看到的重定向 - 由于我的cookie没有跨子域发送:
t=1374052796448 [st= 1] +URL_REQUEST_START_JOB [dt=261]
--> load_flags = 143540481 (DO_NOT_SAVE_COOKIES | DO_NOT_SEND_AUTH_DATA | DO_NOT_SEND_COOKIES | ENABLE_LOAD_TIMING | MAYBE_USER_GESTURE | REPORT_RAW_HEADERS | VALIDATE_CACHE | VERIFY_EV_CERT)
--> method = "GET"
--> priority = 2
--> url = "https://...."
...
t=1374052796708 [st=261] HTTP_TRANSACTION_READ_RESPONSE_HEADERS
--> HTTP/1.1 302 Moved Temporarily
Content-Type: text/html
Date: Wed, 17 Jul 2013 09:19:56 GMT
...
t=1374052796709 [st=262] +URL_REQUEST_BLOCKED_ON_DELEGATE [dt=0]
t=1374052796709 [st=262] CANCELLED
t=1374052796709 [st=262] -URL_REQUEST_START_JOB
--> net_error = -3 (ERR_ABORTED)
Run Code Online (Sandbox Code Playgroud)
Bla*_*mba 16
在我的情况下,type='submit'当我提交表单时页面正在重新加载ajax命中之前我就是这样,所以一个简单的解决方案是type="button"
type ='submit'=> type ='button'
我遇到了类似的问题.就我而言,我正在尝试在apache服务器+ django上使用Web服务(该服务由我自己编写).我输出的输出与你相同:Chrome说它被取消了,而FF则没问题.如果我试图直接在浏览器而不是ajax上访问该服务,它也会起作用.谷歌搜索,我发现一些较新版本的apache没有在响应头中正确设置响应的长度,所以我手动完成了这个.使用django,我所要做的就是:
response['Content-Length'] = len(content)
Run Code Online (Sandbox Code Playgroud)
如果您可以控制要尝试访问的服务,请查找如何修改您正在使用的平台中的响应标头,否则您必须联系服务提供商以解决此问题.显然,FF和许多其他浏览器都能够正确处理这种情况,但Chrome设计人员决定按照规定进行操作.
当 AJAX 请求被丢弃时(如果不是跨源请求),有两种可能性:
1) 的解决方案:在事件处理程序中添加return false;或。e.preventDefault();
2) 的解决方案:在形成 AJAX 请求时添加超时选项。下面的例子。
$.ajax({
type: 'POST',
url: url,
timeout: 86400,
data: data,
success: success,
dataType: dataType
});
Run Code Online (Sandbox Code Playgroud)
对于跨源请求,请检查跨源资源共享 (CORS) HTTP 标头。
| 归档时间: |
|
| 查看次数: |
112492 次 |
| 最近记录: |