我有以下脚本(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).
答案 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
禁用安全性,从而禁用同源策略警告。
希望这有助于......!