跨域发布请求

Posted

技术标签:

【中文标题】跨域发布请求【英文标题】:Cross Origin Post Request 【发布时间】:2018-03-13 19:22:48 【问题描述】:

我正在尝试向其他站点(特别是 Zoho.eu)发送发布请求,以使我能够一键登录。实际上,我想 POST 到登录 URL、我的用户名、密码等。

我遇到了跨源问题,我查看了许多不同的解决方案,例如 JSONP、iFrame 方法、CORS 等,但所有这些都需要我访问我没有的第三方后端。

如何解决这个问题?我知道我可以通过某种方式使用代理来避免跨源问题,但我不确定?

提前致谢。

【问题讨论】:

有关代码示例和详细说明,请参阅答案的如何使用 CORS 代理解决“No Access-Control-Allow-Origin header”问题部分在***.com/questions/43871637/… 【参考方案1】:

如果我理解正确,那么简短的回答是你不能。

代理不会帮助您在用户的浏览器中创建会话并登录。使用代理时,您代表用户从您的服务器发出请求,并且无法将所需的会话值设置为目标域的用户 cookie。

这是故意的。发明了同源策略/CORS 的整个概念,以便其他人无法代表他们不拥有的域中的用户做某事。

我会考虑使用 OAuth,这可能是您实现这种跨域登录流程的正确方式。

【讨论】:

谢谢,我会调查的!【参考方案2】:

一个简单的解决方案(这只是一个临时解决方案,您必须为生产代码找到一个更永久的解决方案)是在您的服务器控制器代码中硬编码请求来自的服务器名称并允许访问从中。

【讨论】:

【参考方案3】:

CORS 保护是有目的的。

Zoho 通过 OAuth 集成为其网站提供更简洁的身份验证方式。这是一种更简洁的集成方式。

在此处清楚地记录了步骤,

https://www.zoho.com/crm/help/api/using-authentication-token.html

不允许任何其他身份验证模式,并且可能会被 Zoho 阻止。

希望对你有帮助。

【讨论】:

太好了,非常感谢!谢谢你的解释!

以上是关于跨域发布请求的主要内容,如果未能解决你的问题,请参考以下文章

如何在 sencha touch 中跨域发布 JSON 请求

如何使跨域资源共享 (CORS) 发布请求正常工作

浏览器是不是允许“发送”跨域请求?

IE8可以从HTTP到HTTPS发布跨域请求吗?

通过服务器端设置解决前端AJAX请求跨域访问WebServie(C#开发,IIS发布)

跨域请求仅支持 HTTP,但不支持跨域