使用PHP解决跨域错误?

时间:2016-06-24 13:32:13

标签: php json extjs

参考此帖子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) {
    }
  });
}   }

1 个答案:

答案 0 :(得分:1)

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

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

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

否则你将得到上述例外。

你可以解决这个问题:

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