将表单从一个 HTTPS 发布到另一个 HTTPS 站点会导致安全警报

发布于 2024-09-27 14:39:05 字数 445 浏览 3 评论 0原文

我需要将一个字符串从 .NET 站点发布到托管在同一服务器(不同虚拟目录)上的经典 ASP 站点。

https://example.com/DOTNETSite/Sender.aspx

https://example.com/ClassicASP/SomeFolder/Target.asp

Target.asp 页面有 3 种方法来处理传入数据:

  1. 表单发布
  2. 查询字符串
  3. 标头

我无法传递我的查询字符串中的数据。所以这个选项已经不存在了。我正在通过在服务器端构建表单并吐出 javascript 代码来执行 form.submit() 来尝试 Form post 方法。但这会导致 Internet Explorer 向用户发出安全警报。我们想避免这种情况。请让我们知道克服这种情况的最佳方法是什么。非常感谢。

I need to post a string from a .NET site to a Classic ASP site which are hosted on the same server (different virtual directories).

https: //example.com/DOTNETSite/Sender.aspx

to

https: //example.com/ClassicASP/SomeFolder/Target.asp

Target.asp page has 3 ways to handle incoming data:

  1. Form Post
  2. Query String
  3. Headers

I cant pass my data in query string. so that option is out. I am trying the Form post method by building a form on the server side and spitting out javascript code to do a form.submit(). But this is causing a internet explorer to throw a Security Alert for the user. We want to avoid this. Please let us know what is the best way to overcome this situation. Thanks a ton.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

回梦 2024-10-04 14:39:05

现在你正在做:

你的服务器---->您的客户端/浏览器 ---->他们的服务器

相反你应该使用:

你的服务器---->您的客户端/浏览器 ---->你的服务器---->他们的服务器

也就是说(如果还不够清楚),让它将表单发送到您自己的服务器。
当您的服务器收到表单时,它应该将其发送到目标服务器。

在基本层面上,这是可行的。但是,如果用户应该在第二台服务器等上登录,您可能会遇到问题。

我将尝试用 PHP 来说明一个示例:

文件:form.html

<form action="send.php" method="post">
    ....
</form>

文件:send .php

<?php
  $url='https://example.com/ClassicASP/SomeFolder/Target.asp';
  // create new cur connection
  $ch=curl_init();
  // tell curl target url
  curl_setopt($ch, CURLOPT_URL, $url);
  // tell curl we will be sending via POST
  curl_setopt($ch, CURLOPT_POST, true);
  // tell it not to validate ssl cert
  curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
  // tell it where to get POST variables from
  curl_setopt($ch, CURLOPT_POSTFIELDS, $_POST); 
  // make the connection
  curl_exec($ch);
  // close connection
  curl_close($ch);
?>

Right now you are doing:

your server ----> your client/browser ----> their server

Instead you should use:

your server ----> your client/browser ----> your server ----> their server

That is (if it wasn't clear enough), make it send the form to your own server.
When your server receives the form, it should send it to the target server.

On a basic level, this works. However, you may get issues if the user is supposed to be logged in on the 2nd server etc.

I'll try to illustrate an example in PHP:

File: form.html

<form action="send.php" method="post">
    ....
</form>

File: send.php

<?php
  $url='https://example.com/ClassicASP/SomeFolder/Target.asp';
  // create new cur connection
  $ch=curl_init();
  // tell curl target url
  curl_setopt($ch, CURLOPT_URL, $url);
  // tell curl we will be sending via POST
  curl_setopt($ch, CURLOPT_POST, true);
  // tell it not to validate ssl cert
  curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
  // tell it where to get POST variables from
  curl_setopt($ch, CURLOPT_POSTFIELDS, $_POST); 
  // make the connection
  curl_exec($ch);
  // close connection
  curl_close($ch);
?>
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文