【问题标题】:Azure and CORS Access-Control-Allow-Origin with ajax and phpAzure 和 CORS Access-Control-Allow-Origin 与 ajax 和 php
【发布时间】:2014-02-18 04:09:18
【问题描述】:

首先,我不在我们这个世界的网络端,所以请善待后端人员。

快速背景:出于个人需要,我开发了一个 google chrome 扩展程序。它们基本上是加载在 chrome 窗口中的网页,而且……是的,就是这样。一切都在客户端(脚本、样式、图像等),只有数据通过 ajax 调用来自服务器。一个 cron 作业每小时调用一个 php 脚本来生成两个文件。一,data.json 包含 json 格式的“最新”数据。另一个 hash.json 包含数据的哈希值。客户端 chrome 应用程序使用本地存储。如果远程哈希与本地哈希不同,他只需从远程服务器检索数据文件。

因为我有一个 Azure 的 BizSpark 帐户,所以我的第一个想法是:带有 php 脚本的 Azure 网站、一个简单的主页和生成的文件以及用于作业的 Azure 调度程序。

我已经在本地开发了所有东西,一切都运行良好......但是一旦在 azure 平台上我得到这个错误

XMLHttpRequest cannot load http://tso-mc-ws.azurewebsites.net/Core/hash.json. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost:23415' is therefore not allowed access.

但我真的无法理解的是,我能够(你也会)用我的浏览器获取文件......所以我就是不明白......我也根据我在 SO 和其他网站上找到的一些帖子尝试操作配置,添加额外的标题,似乎没有任何工作......

有什么想法吗?

【问题讨论】:

    标签: ajax azure cors


    【解决方案1】:

    好吧,这可能是小巨魔的回答,但不是我的意思(我是 .net 顾问,所以......没有反对 MS)。

    我选择一个 linux azure 虚拟机,安装 apache 和 php,配置 apache,设置一些权限并为 CROS 定义标题,并在 +/- 30 分钟内配置一个 cron...因为我的目标是让它运行问题已解决,正在运行。

    【讨论】:

      【解决方案2】:

      但我真正无法理解的是我能够(而且你会 太)用我的浏览器获取文件......所以我就是不明白

      所以当你在浏览器地址栏输入http://tso-mc-ws.azurewebsites.net/Core/hash.json时,并不是跨域请求。但是,当您从在不同域中运行的应用程序(在您的情况下为 http://localhost:23415)发出 AJAX 请求时,这是一个跨域请求,并且由于您的网站上未启用 CORS,您会收到错误消息。

      关于启用 CORS,请查看此线程:HTTP OPTIONS request on Azure Websites fails due to CORS。我从未使用过 PHP/Azure 网站,所以我可能对这个链接有误,但希望它可以为您指明正确的方向。

      【讨论】:

      • 感谢 Gaurav Mantri,我已经阅读了这篇文章,没有任何改变。我找到了一种让它工作的方法,看看答案。感谢您的帮助!
      猜你喜欢
      • 2016-09-30
      • 2014-08-11
      • 2017-11-24
      • 2016-09-09
      • 2021-05-12
      • 2019-02-07
      • 2015-03-05
      • 2014-11-01
      • 1970-01-01
      相关资源
      最近更新 更多