【问题标题】:How to test GET/POST or better way?如何测试 GET/POST 或更好的方法?
【发布时间】:2014-09-20 01:54:15
【问题描述】:

我正在编写一个应用程序,它将 POST/GET 请求从远程客户端发送到服务器。作为一种测试和自我教育的方式,我试图通过编写一个简单的 html 文件来提出这些请求,该文件驻留在我的桌面上,并带有一个可以 POST 到服务器端 php 文件的表单。我还尝试使用独立于并连接到表单的 ajax 样式请求或 XMLHttprequests,但我在控制台中收到错误:

Cross Origin Request Blocked

对于所有尝试形式或无形式。我已经读到这是因为我从FILE:// 发出请求,除非以某种方式启用了 CORS,否则浏览器不允许这样做。我还读过使用网络服务器托管文件可能会解决问题,但我不明白网络服务器的含义(单独的还是相同的域?灯、xammp、mamp?)而且我对覆盖安全性不感兴趣(允许cors with headers)如果我最终必须在它上线时找到一种安全的方式。

正如我所说,我实际上只是在尝试测试,我希望我的 html 文件能够与另一台机器上的服务器端 php 进行通信,而不是仅仅将所有文件放在同一个域/文件夹中。有没有办法使用 html/javascript 或 Websockets 或任何 html5 提供的可能有用的东西来做到这一点?

欢迎使用代码示例,但如果有人能帮助我更好地理解这个概念,我们将不胜感激。我是菜鸟XD

如果存在更好的方法,我完全愿意接受,我唯一的限制是 UI/客户端上的所有内容都将用 html/javascript 编写,但我可以使用英特尔 XDK api 和 Cordova 中的一个或两者api也是。

请帮忙,谢谢。

【问题讨论】:

  • localhost 单独可能无济于事,但您可以导航到 chrome/ff 中的远程站点,并在 javascript 控制台中测试您的代码。这种测试方式是免费、简单且 100% 有效的。

标签: javascript php html xmlhttprequest intel-xdk


【解决方案1】:

如果您需要发送一些 HTTP 请求来测试应用程序的服务器端,我强烈建议您使用像 Fiddler 这样的 HTTP 客户端:

http://www.telerik.com/fiddler

另外,请阅读:

GUI HTTP client

基于桌面的客户端将有一个漂亮的 GUI,其中包含许多用于调整、保存、发送、重新发送您的请求的功能。

【讨论】:

    【解决方案2】:

    您可以做的一件事是使用 pythons SimpleHTTPServer 来提供 html 文件。然后,当您转到浏览器并转到 127.0.0.1:8000 时,来源将是相同的。

    您可以通过进入包含 html 文件的目录并运行命令 python -m SimpleHTTPServer 8000 来运行服务器。这将在端口 8000 上提供该目录的内容,并且它应该允许在没有 CORS 异常的情况下发出请求。

    这是文档https://docs.python.org/2/library/simplehttpserver.html

    【讨论】:

    • 这与使用 mamp(localhost) 进行测试有什么不同吗?
    • 有点不同。 Mamp 有更多的功能,比如能够使用 php 和 mysql。如果您不需要任何 php 代码,那么它的工作方式与 mamp 相同。 SimpleHttpServer 所做的只是在给定端口上的本地主机上提供静态内容(html、css、javascript)
    【解决方案3】:

    我建议您在浏览器中禁用同源策略,以便测试来自本地文件的跨域 AJAX 请求。

    例如,在 Windows 上使用 Google Chrome,您可以通过使用以下命令启动 chrome 来禁用此功能:

    C:\Users\YOUR_USER\AppData\Local\Google\Chrome\Application\chrome.exe --allow-file-access-from-files --disable-web-security

    这两个标志一起允许您测试来自本地文件的跨域 ajax 请求。这些标志与 Mac、Windows 和 Linux 相关。

    【讨论】:

    • 在本地主机之外这样做安全吗?就像我要尝试从 file://examplexhr.html 向 somedomain.com/somephp.php 发送请求一样?
    • 您应该能够发送请求而不会被浏览器中的跨域请求 (CORs) 消息阻止。
    【解决方案4】:

    这不是关于如何编写请求,但如果您使用的是最新版本的英特尔 XDK,您可以绕过编写这些请求。如果您转到最新版本的英特尔 XDK 中的服务选项卡,则有一个名为 Sandbox Explorer 的服务。它有一个 GET 和 POST 方法 UI。只需插入 URL,您将立即看到响应。您可以使用它来调试您正在编写的服务器。一旦服务器返回正确的响应,创建数据绑定以在客户端 javascript 或 html 代码中使用 GET API。交叉起源得到照顾。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-10-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多