有啥方法可以避免 axios 中的 linkpreview.net 出现 CORS 错误,例如 Angular 中的 trustAsResourceUrl()?

Posted

技术标签:

【中文标题】有啥方法可以避免 axios 中的 linkpreview.net 出现 CORS 错误,例如 Angular 中的 trustAsResourceUrl()?【英文标题】:Is there any way to avoid CORS error with linkpreview.net in axios like trustAsResourceUrl() in Angular?有什么方法可以避免 axios 中的 linkpreview.net 出现 CORS 错误,例如 Angular 中的 trustAsResourceUrl()? 【发布时间】:2017-12-11 07:12:10 【问题描述】:

我正在尝试使用 axios 在我的 reactJS 应用程序中实现 linkpreview.net API,但它给了我跟随 CORS 错误

跨域请求被阻止:同源策略不允许读取 远程资源在 http://api.linkpreview.net/?callback=JSON_CALLBACK&q=abc.xyz&key='我的 关键在这里'。 (原因:CORS 标头“Access-Control-Allow-Origin” 不见了)。

这是我的 axios 代码

axios(
          method:'post',
          url:"http://api.linkpreview.net/?callback=JSON_CALLBACK&q="+res+"&key="+UserSetting.fetchUrlKey,
          headers: 'Access-Control-Allow-Origin': '*',
          data: data
      )
      .then(response => 
        console.log(response);

      )
      .catch((error) => 
        console.log(error);
      )

如果我做错了什么请告诉我!

【问题讨论】:

我认为 CORS 标头应该设置在应用程序的后端而不是 javascript 我正在使用 linkpreview.net 的 API。请检查linkpreview.net 你试过设置dataType: 'jsonp'吗?还有为什么你没有在数据中传递qkey 而不是url? 我在这两个地方都尝试了这两个数据。另外如何在axios中设置dataType?在标题中?? method之后添加新的dataType属性 【参考方案1】:

由于某种原因,Axios 不会为 jsonp 请求提供支持,这里提到了这一点:https://github.com/mzabriskie/axios/pull/15

为此,他还使用 npm 包 jsonp 为 jsonp 提供了另一个配方

所以,您可以尝试一下并使用类似的东西:

var j = require('jsonp');

j('http://api.linkpreview.net/?key=123456&q=https://www.google.com', function (err, data) 
  if (err) 
    console.error(err.message);
   else 
    console.log(data);
  
);

【讨论】:

【参考方案2】:

您不必再使用 JSONP,因为 api.linkpreview.net 现在完全支持 CORS - 简单和预检。我对 axios 不熟悉,但这应该适用于 jQuery:

$.ajax(
    url: "https://api.linkpreview.net?key=123456&q=https://www.google.com",
        success: function(result)
            console.log(result);
    
);

【讨论】:

以上是关于有啥方法可以避免 axios 中的 linkpreview.net 出现 CORS 错误,例如 Angular 中的 trustAsResourceUrl()?的主要内容,如果未能解决你的问题,请参考以下文章

有啥方法可以避免一个查询中的多个联接

有啥方法可以将变量分配给 axios 请求并在 onUploadProgress 中访问它

有啥方法可以让浏览器页面避免 Pyqt5 中的重定向?

有啥方法可以让 Vue3 中的 sessionStorage 响应式?

vue.js 中的 $http.get() 与 axios.get() 有啥区别?

有啥方法可以避免 valarray 和数组之间的复制吗?