【问题标题】:cross-origin error resolve using PHP?使用 PHP 解决跨域错误?
【发布时间】:2016-06-24 13:32:13
【问题描述】:

参考本帖https://stackoverflow.com/questions/22627392/extjs-fileuplaod-cross-origin-frame

当服务器端语言是 PHP 时,谁能告诉我如何设置这些值。我需要获取 JSON 数据。我在前端使用 ExtJS。

完整场景:

我有一个代码可以将 json 文件上传到服务器,然后获取该文件的内容作为响应,但上传后我得到{success:false,message:"Blocked a frame with origin "http://localhost:1842" from accessing a cross-origin frame."} .

如果有更好的解决方案来读取位于客户端计算机上的 json 文件,它也会有所帮助。

我使用的代码是:

function(){
  var form = this.up('form').getForm();
  if(form.isValid()){
    form.submit({
      params: {
        domain: document.domain
      },
      url: 'http://MY-IP/phpfileupload/file.php',
      waitMsg: 'Graph Uploading',
      success: function(fp, action) {
    },
    failure: function(fp, action) {
    }
  });
}   }

【问题讨论】:

    标签: php json extjs


    【解决方案1】:

    您遇到了same origin policy,这是 javascript 的一项安全功能。

    如果您通过 javascript 请求某些内容,则必须是:

    • 包含子域的主机名相同
    • 相同的协议
    • 同一个端口

    否则你会得到上面的异常。

    你可以解决这个问题:

    • 使用定义跨站点访问的CORS(这意味着您必须有权访问外部Web服务才能添加http头信息)
    • 或创建反向代理并使外部服务器显示为在同一个域中(这意味着您需要访问您身边的 Web 服务器)
    • 或者如果可以的话,从一开始就在同一台服务器上做这些事情

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-09-13
      • 1970-01-01
      • 2020-04-25
      • 1970-01-01
      • 2012-02-17
      • 1970-01-01
      • 2015-01-14
      • 2018-11-02
      相关资源
      最近更新 更多