我尝试访问此API,点击此处获取更多信息
POST https://api.line.me/v2/oauth/accessToken
Run Code Online (Sandbox Code Playgroud)
但总是得到错误:
XMLHttpRequest cannot load https://api.line.me/v2/oauth/accessToken.
No 'Access-Control-Allow-Origin' header is present on the requested resource
Run Code Online (Sandbox Code Playgroud)
现在我想确保域(以及其他,例如:facebook,twitter等...)启用CORS,我该怎么做?
CORS协议的核心部分是Origin浏览器在处理从前端JavaScript代码发起的跨源请求时发送的请求标头.因此,如果您要从非浏览器客户端/工具模拟基于浏览器的请求,则需要发送Origin标头:
curl -i -H 'Origin: http://sample.com' \
'https://access.line.me/dialog/oauth/weblogin?response_type=code&client_id=12345&redirect_uri=https%3A%2F%2Fsample.com%2Fauth&state=123abc'
Run Code Online (Sandbox Code Playgroud)
要检查响应,还需要告诉客户端/工具向您显示响应标头.在上面的示例中curl,这就是-i选项的作用.
最后,要确定发送响应的服务器是否在响应中启用了CORS,您需要在Access-Control-Allow-Origin那里查找响应头.
在https://access.line.meAPI 的特定情况下,您永远不会在响应Access-Control-Allow-Origin中找到响应头- 这对于"Web登录流程"的文档来说并不令人惊讶https://developers.line.me/web-api/integrating- web-login-v2#steps_web_login:
Web应用程序的LINE登录过程(Web登录)基于OAuth 2.0授权代码授予流程.您的应用程序必须能够在服务器端发出请求并从LINE平台接收数据.
也就是说,文档特别提到需要从"服务器端"发出请求,而这些文档中的其他任何地方都没有提到支持从运行浏览器的前端JavaScript代码发出的请求,也没有任何代码示例如何使用JavaScript发出请求.
通常,如果特定服务/ API启用了CORS并提供了有关如何向该服务/ API发出请求的文档,那些文档将提供有关如何从前端JavaScript执行此操作的示例/详细信息.
换句话说,如果特定服务/ API的文档没有提供如何从浏览器中运行的前端JavaScript向其发出请求的示例/详细信息,则它可能不支持CORS.
| 归档时间: |
|
| 查看次数: |
10837 次 |
| 最近记录: |