JQuery / AJAX:阻止跨源请求

时间:2016-05-06 08:58:42

标签: javascript php jquery ajax

我有以下脚本(simplfied)从本地php文件中获取一些数据:

$(document).ready(function(){

  var current_date = "x=y";

  $.ajax
  ({ 
    url: 'work/get_cal.php',
    type: 'post',
    data : current_date,
    async: false,
    success: function(result)
    {
      alert('never gets this far');
    }
  });

});

但是,即使所有内容都在同一台服务器上,我也会遇到跨域错误。有没有人以前有这个问题?

Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at http://www.mywebsite.co.uk/work/get_cal.php. (Reason: CORS header 'Access-Control-Allow-Origin' missing).

3 个答案:

答案 0 :(得分:1)

将以下行添加到 get_cal.php

header('Access-Control-Allow-Origin: *');

这将允许Cross-Origin请求。

答案 1 :(得分:-1)

从评论到未来Google员工的原始问题。

代码使用绝对路径并最终在不同的域"级别"当使用www访问该页面并且脚本请求时没有www。这导致了CORS问题。

答案 2 :(得分:-1)

同源策略允许在浏览器中运行脚本,并允许使用 SAME URI方案主机名向页面发出请求端口号。这是为了在大多数浏览器中实现安全性而实现的。

我个人在测试期间使用Chrome并将网络安全禁用。使用 - disable-web-security 参数在Chrome中启用此功能。

我强烈建议为开发创建一个单独的快捷方式&测试目的和使用此选项进行常规浏览...

"C:\<path_to_chrome_folder>\chrome.exe" --user-data-dir="C:/Chrome dev session" --disable-web-security

--user-data-dir用于存储会话详细信息和其他浏览器数据,因此保持与常规浏览数据分开。

--disable-web-security禁用安全性,从而禁用同源策略警告。

希望这有助于......!