我正在开发一个小概念验证Web应用程序,该应用程序应该向服务器(SAP ABAP系统)发送GET请求。服务器提供ODATA REST服务。当我只是将服务的URI粘贴到浏览器的地址栏中时,会立即显示所需的内容。但是当我尝试通过webapp(使用jQuery for AJAX)发出请求时,会出现与CORS相关的问题:
No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost:XXXXX' is therefore not allowed access. The response had HTTP status code 401.
我的代码和我在HTTP请求中遇到的其他问题可以在post中找到。 我不明白为什么来自浏览器(或fiddler)的请求似乎没有问题但是只要我从应用程序发送请求(本地托管btw),就会出现CORS问题。仅供参考我无法访问服务器端代码,因此无法编辑“Access-Control-Allow-Origin”部分。
答案 0 :(得分:0)
您是否可以访问提供网页的服务器?如果是这样,我会通过您自己的服务器将请求转发给远程服务器。
这意味着您的页面会询问您的服务器,而服务器会询问远程服务器。
这样就不会发生CORS。
答案 1 :(得分:0)
如果您无法访问服务器端代码,并且您确定始终发出GET请求,则可以使用JSONP。但仍然使用Response头解析CORS是最佳解决方案。
答案 2 :(得分:0)
跨域资源共享(CORS)是一种机制,允许从源自资源的域之外的另一个域请求网页上的许多资源(例如,字体,JavaScript等)。
当您直接从浏览器发出请求时(通过键入url),CORS不会生效。但是,如果您从浏览器发出AJAX请求,它也会被阻止。
如果您仍想通过浏览器向资源发出请求,则需要一些扩展程序,例如适用于Chrome的Allow-Control-Allow-Origin: *和适用于Firefox的各种扩展程序。