Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/432.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
有没有办法绕过Javascript/jQuery';s的本地访问同源策略?_Javascript_Jquery_Same Origin Policy - Fatal编程技术网

有没有办法绕过Javascript/jQuery';s的本地访问同源策略?

有没有办法绕过Javascript/jQuery';s的本地访问同源策略?,javascript,jquery,same-origin-policy,Javascript,Jquery,Same Origin Policy,尝试使用ajax,getJSON,以及类似的函数从本地(非服务器)开发计算机获取外部URL。有没有办法绕过同源策略,这样我就可以在本地进行测试,而不必上传到服务器上?有不同的方法可以解决这个问题,具体取决于开发使用的浏览器。例如: 在Firefox(Gecko)中,将security.fileuri.strict\u origin\u policy设置为false 在Chrome浏览器中,使用选项“允许从文件访问文件” 参考资料:,试试这个(php curl ayax跨域-): 因为这是

尝试使用
ajax
getJSON
,以及类似的函数从本地(非服务器)开发计算机获取外部URL。有没有办法绕过同源策略,这样我就可以在本地进行测试,而不必上传到服务器上?

有不同的方法可以解决这个问题,具体取决于开发使用的浏览器。例如:

  • 在Firefox(Gecko)中,将
    security.fileuri.strict\u origin\u policy
    设置为
    false
  • 在Chrome浏览器中,使用选项“允许从文件访问文件”
参考资料:,

试试这个(php curl ayax跨域-):


因为这是一个开发问题,而不是最终用户/功能问题,所以不要将重点放在让AJAX跨域,而是将您的开发环境设置为从生产服务器获取最新数据的代理。这其实很容易做到

您需要在您的开发环境中设置一个web服务器(如果它还没有),然后配置服务器,通过获取然后回显生产数据来响应404请求。您可以设置服务器,以便只拾取AJAX数据文件(否则,如果开发页面上开始显示生产资产,则调试其他文件会很混乱)。所以如果
http://dev.myserver.com/data/json/mydata.json
丢失,您的404脚本将获得
http://prod.myserver.com/data/json/mydata.json
并将其回显到客户端。这种设置的好处在于,您可以非常轻松地使用模拟数据:如果该文件在您的开发环境中,那么您的AJAX脚本将获得该文件;但是,如果您随后删除或重命名该文件,您将获得生产数据。这项功能非常有用,我推荐得太多了


如果您使用的是XML,我建议您复制404中的HTTP头。如果您的404进程以
内容类型
响应
text/html
,您将无法解析任何
responseXML

我们在开发web应用程序时也有同样的需求。我们是这样做的:

浏览器和服务器仅通过JSON进行通信。
所有HTML都使用(我们的JS模板引擎)在浏览器中呈现。
浏览器代码在本地开发,如下所示:

我们在应用程序的url中添加了一个
host
参数:

http://localhost/app.html?host=test.beebole-apps.com
在生产环境中,JSON通过POST发送到服务器。
但是在这里,负责ajax调用的函数将对
host
参数做出反应,并进行注入(GET)

<script src="http://test.beebole-apps.com/?callback=f2309892&json={...}" />
除了大小限制(你不能用GET将一个大JSON发送到服务器)之外,它工作起来非常轻松。

另一个优点是,您可以从同一本地主机调用所有不同的系统(开发和测试)。

这里有一个简单的答案:chrome——禁用web安全

来自源代码(chrome_switches.h):

我想使用jquery.js将AJAX调用发送到运行在8080端口上的Google Apps python服务器。为了测试,我想在同一台机器上运行浏览器和服务器

我不理解所有的安全细微差别,但对于临时开发来说,这似乎是一个合理的解决办法。只要我只使用chrome来测试这个标志,就不会有问题

以下是Mac OS X的全部命令:


/Applications/Google\Chrome.app/Contents/MacOS/Google\Chrome——禁用网络安全性

我也遇到了这个问题,使用Chrome和
——允许从文件访问文件
选项并没有真正的帮助。回到我的服务器需要返回的脚本,我在响应中添加了以下标题,效果很好:

'Access-Control-Allow-Origin: http://localhost/'
另一个是允许某种密钥交换

'Access-Control-Allow-Headers: X-KEY'

在不接触服务器的情况下-

在Firefox中绕过同源安全策略的最快、最简单的方法是安装Force CORS插件。这通过在每个响应中插入适当的头来适用于任何服务


不允许在CORS中使用localhost使用lvh.me

这太棒了!我注意到你没有在本地使用纯的。。。还有-你能稍微扩展一下你的文字来写一篇教程吗?还有(只是为了确定)
http://localhost/app.html?host=test.beebole-apps.com
位于客户端(您可以让客户端下载带有某种web服务器或URL密码的应用程序…)它调用
test.beebole apps.com
server?PURE是一个JS库,它从JSON数据构建HTML。它在浏览器上工作。如果你下载zip文件,有一个名为tutorial的目录和一些示例;如果没有,您可以使用file:///Users/mic/app.html 或C:\test\app.html;然后在该页面中,您将脚本标记注入test.beebole-apps.com值得一提的是,在安装之后,您必须单击view=>Toolbar=>add-on bar。然后cors按钮将显示在右下角,单击该按钮以启用它。我解压缩了xpi,看到当按下按钮时有一个切换功能,但从来没有看到按钮。记住在执行此操作之前杀死chrome进程的所有实例,否则它将无法工作。
'Access-Control-Allow-Origin: http://localhost/'
'Access-Control-Allow-Headers: X-KEY'