javascript - 关于发出 XHR 请求的问题

标签 javascript ajax xss

我不知道为什么,但我还没有真正找到合适的资源,这有助于我理解这里的最佳实践,但假设我有一个应用程序,我想向另一个应用程序发出 Ajax 请求应用程序。

假设应用 A 的域名是:www.example.com,我想向 www.someapplication.com 发出请求

我可以做这样的事情吗? (本例中为 jQuery)

$.ajax({
  url: 'http://www.someapplication.com/items',
  dataType: 'json',
  data: "search=butter",
  success: function(data){
    console.log(data);
  }
});

当我在浏览器中访问地址 (http://www.someapplication.com/items?search=butter&format=json) 时,它会返回 200 响应以及 json 格式的内容,其中我请求了但是,当上面的 JS 执行时,它收到了 200 响应,但是没有内容。

这是因为我的 someapplication.com 服务器将其识别为 XSS 攻击并拒绝响应吗?

我的一个疑问是请求是否应该发送到 .js 文件?我在其他应用程序的设计中注意到了这一点,例如:http://www.someapplication.com/search.js...呃,而不是我的概念有什么问题,我错过了吗XSS 和 Ajax 有何重大意义?

最佳答案

确实是同源政策的原因。如果您可以控制远程服务器,您也可以只添加 HTTP Access-Control服务器端的 header 。这样,您基本上可以从服务器端控制是否允许触发 XMLHttpRequest 的客户端处理响应。任何最近的(并且像样的)网络浏览器都会采取相应的措施。

这是一个针对 PHP 的示例,说明如何相应地设置 header 。

header('Access-Control-Allow-Origin: *'); // Everone may process the response.
header('Access-Control-Max-Age: 604800'); // Client may cache this for one week.
header('Access-Control-Allow-Methods: GET, POST'); // Allowed request methods.

key 是Access-Control-Allow-Origin: *。这通知客户端来自 *(事实上,任何地方)的请求都可以处理响应。例如,如果将其设置为 Access-Control-Allow-Origin: http://example.com,则网络浏览器可能仅在从上述域提供初始页面时处理响应。

许多现有的 JSON 服务也在 Google 的每个服务下使用此服务。

另请参阅:

关于javascript - 关于发出 XHR 请求的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3654197/

相关文章:

javascript - 视觉 : Import router in helper class and push route

javascript - 如何将ajax变量值传递给codeigniter中的 Controller

javascript - 不确定为什么这不通过 AJAX 在 IE 中加载内容?

javascript - 为什么javascript是: URIs allowed in the src attribute of <img> tags?

java - 在 Java Web 项目中显示 BLOB 对象以避免持久的跨站点脚本?

javascript - Browserify with jQuery >= 2 产生 "jQuery requires a window with a document"

javascript - 禁用无法正常工作 chrome 浏览器

javascript - Jasmin spy 监听 AJAX 无法读取未定义的属性 'done'

ruby-on-rails - ajax 调用期间不保存 Rails session

java - Client Cross Frame Scripting Attack解决方案