Chrome中嵌入式凭据的替代方案,用于指向第三方网站的链接?

时间:2017-08-02 17:46:10

标签: javascript google-chrome xmlhttprequest

我的目标是让访问者可以点击一个链接,然后重定向并登录到具有基本身份验证的网站。我们目前在几个非我们托管的网页but embedded credentials are no longer supported in Chrome上使用嵌入式凭据。我一直在调查在网址中传递凭据的替代方法(即https://user:password@website.com),到目前为止还没有找到比以下更好的解决方案:

var url = 'https://www.third-party-website.com';
var username = 'my-username';
var password = 'my-password';
var encodedAuth = window.btoa(username + ':' + password); 

$.ajax({
  type: 'GET',
  url: url,
  xhrFields: {
     withCredentials: true,
  },
  headers: {
   "Authorization": "Basic " + encodedAuth
  },
  complete: function (result) {
   window.location.href = url;
  },
  error: function (req, status, error) {
    console.log(error);
  }
});

这给了我以下错误:

  

XMLHttpRequest无法加载https://www.third-party-website.com。 No' Access-Control-Allow-Origin'标头出现在请求的资源上。起源' http://my-website.com'因此不允许访问。

Based on this SO thread,我想我需要访问第三方服务器才能将其Access-Control-Allow-Origin设置为允许我的域名。如果我无法更改第三方服务器上的标题,还有其他选择吗?或者我的AJAX请求格式不正确?

1 个答案:

答案 0 :(得分:0)

您可能希望在自己的网站上设置页面作为代理 并使用js中的类似内容将用户名+密码发布到您的代理 Link

$usr = $_POST['username'];
$pwd = $_POST['password'];

How to setup curl with auth