Javascript 如何从WinJS iframe Windows 8应用程序向Paypal发送帖子?

Javascript 如何从WinJS iframe Windows 8应用程序向Paypal发送帖子?,javascript,iframe,windows-8,paypal,winjs,Javascript,Iframe,Windows 8,Paypal,Winjs,我有一个使用Javascript/HTML的Windows 8应用程序,在iframe中我有一个Paypal表单: <form action="https://www.paypal.com/cgi-bin/webscr" method="post" target="_blank"> <input type="hidden" name="cmd" value="_s-xclick"> <input type="hidden" name="on0" value="Pag

我有一个使用Javascript/HTML的Windows 8应用程序,在iframe中我有一个Paypal表单:

<form action="https://www.paypal.com/cgi-bin/webscr" method="post" target="_blank">
<input type="hidden" name="cmd" value="_s-xclick">
<input type="hidden" name="on0" value="Pages">
<select name="os0">
    <option value="10">$1.95</option>
    <option value="25">$2.95</option>
</select>
<input type="hidden" name="currency_code" value="USD">
<input type="hidden" name="encrypted" value="[removed]">
<input type="image" src="/btn_buynow_LG.gif" border="0" name="submit" alt="">
</form>

$1.95
$2.95
此表单在所有浏览器(包括IE10)中都能正常工作,但当从Windows8应用程序的iframe中提交时,它将引导用户进入Paypal主页。这通常表示表单存在问题。我尝试过托管Paypal按钮、加密按钮和未加密按钮,它们都表现出相同的行为。只有当我从Windows 8应用程序中提交此表单时,它才会进入Paypal.com主页

我还尝试将每个URL作为允许的URL添加到清单中:

<ApplicationContentUriRules>
<Rule Match="http://example.com" Type="include" />
<Rule Match="http://*.example.com" Type="include" />
<Rule Match="http://paypal.com" Type="include" />
<Rule Match="http://*.paypal.com" Type="include" />
<Rule Match="https://paypal.com" Type="include" />
<Rule Match="https://*.paypal.com" Type="include" />
</ApplicationContentUriRules>

我尝试添加/删除沙盒属性并添加所有属性组合,如下所示:

<iframe sandbox="allow-same-origin allow-top-navigation allow-forms allow-scripts allow-popups" src="http://example.com/paypalbtn.html"></iframe>

如果我删除
target=“\u blank”
,则Windows 8应用程序将导航到黑屏并挂起。我被迫alt tab并关闭应用程序。我认为这是表单在另一个进程中发布到新窗口的问题

如何从Windows 8应用程序的iframe中启动Paypal


是否需要填写表格?我现在意识到form GET是有效的。

我认为paypal不允许iframe支持。他们最有可能使用以下方法:

它允许他们检测页面是否在iframe中呈现,如果是,则阻止加载..(也称为显示空白页面),就像您正在经历的那样


这是无法避免的。

当从Windows8应用程序中的iframe启动时,Paypal将阻止表单发布到新窗口。结果是您看到的是Paypal主页,而不是采购订单

我可以确认,只需将表单方法切换到
GET
,并使用
target=“\u blank”
即可完美工作,不会出现问题:

 <form action="https://www.paypal.com/cgi-bin/webscr" method="get" target="_blank">

在iframe中解决此问题的另一种方法是在文本或图像周围使用标准锚定标记,并手动创建URL,如下所示:

<a href="https://www.paypal.com/cgi-bin/webscr?custom=[custom info]&item_name=[URL encoded name]&item_number=[num]&amount=9.95&currency_code=USD&cmd=_xclick&business=[paypal email address]&return=[URL encoded URL]">Buy Now</a>


这个答案的功劳归于此页面。

我在PayPal和Windows应用商店应用程序方面也遇到了类似的问题。我刚刚在这个帖子中发布了我的问题解决方案:


我认为payapal不支持iframe表单submit@SVarun这是正确的。这一问题包括在本报告中。显然,这是一种安全措施。是的,我可以确认Paypal发送了一个响应头
X-FRAME-OPTIONS:SAMEORIGIN
。这将阻止Paypal.com在我的iframe中呈现,但我正在尝试从iframe向新窗口执行表单发布。iframe中的URL是我的URL,因此example.com将在新窗口中发布到paypal.com。这篇文章似乎有效,但我认为Paypal检测到了一些有趣的东西,并显示了Paypal主页。从它所说的
来看,页面只能显示在与页面本身相同来源的框架中。
这意味着新窗口不再是同一来源-或者至少我是这样理解的。这没关系,因为Paypal不是正在iframe中显示。我想我应该能够发布到一个新的窗口,这是在一个不同的来源。