0

我有一个 iframe,它通过小书签注入到任意网页中。它指向http://localhost:5000/test,这是一个运行以下 Javascript 的简单 HTML 页面:

$.ajax({
  type: "POST",
  url: "http://localhost:5000/parse",
  data: {data:"hello world"}
}).done(function( msg ) {
  console.log("Success!!", arguments);
}).fail(function(jqXHR, textStatus, errorThrown) {
  console.log("Error", arguments);
});

我可以在网络检查器中看到调用已发出,但它一直处于(待处理)状态,直到请求在 30 秒后超时。服务器日志显示服务器根本没有受到攻击。奇怪的是,如果我删除了ajax 请求中的data参数,服务器就会被命中并且事情会按预期工作。

$.ajax({
  type: "POST",
  url: "http://localhost:5000/parse"
}).done(function( msg ) {
  console.log("Success!!", arguments); // this works.
});

我不希望跨域策略问题成为问题,因为 iframe 和 ajax 请求目标位于同一个域中。我在这里想念什么?浏览器级别是否存在阻止此请求通过的东西?

4

1 回答 1

0

尝试将 dataType 和 contentType 添加到 ajax 设置

$.ajax({
   type: "POST",
   url: "http://localhost:5000/parse",
   contentType: 'application/json; charset=utf-8',
   dataType: 'json',
   data: {data:"hello world"}
 }).done(function( msg ) {
     console.log("Success!!", arguments);
 }).fail(function(jqXHR, textStatus, errorThrown) {
     console.log("Error", arguments);
 });
于 2013-01-24T01:22:37.243 回答